-
deprecated startActivityForResult
'startActivityForResult(android.content.Intent, int)' is deprecatedDeprecated된 이유
결과를 얻기 위한 Activity를 실행하는 방식을 사용할 때, 메모리 부족으로 인해 프로세스와 Activity가 사라질 수 있다. (특히 카메라 같은 메모리를 많이 사용하는 작업은 소멸 확률이 굉장히 높다.)
Activity Result API는 다른 Activity를 실행하는 코드는 Result Callback 부분과 분리해서 만들어야 한다.
Result Callback은 프로세스와 Activity가 다시 생성될 때 사용할 수 있어야 하므로 다른 Activity를 실행하는 로직은 Activity가 생성될 때마다 Callback을 무조건 등록해야 한다.작업코드
Intent intent = new Intent().setType("*/*") .setAction(Intent.ACTION_GET_CONTENT); ActivityResultLauncher<Intent> mArlauncher; //... Intent intent = new Intent().setType("*/*") .setAction(Intent.ACTION_GET_CONTENT); mArlauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), rst-> { Toast.makeText(getApplicationContext(), getFilenameFromUri(rst.getData().getData()), //"rstcode: " + rst.getData().getData(), Toast.LENGTH_LONG).show(); if(rst.getResultCode() == RESULT_OK) { } mArlauncher.launch(intent);
암호: infos
'Android' 카테고리의 다른 글
OkHttp 파일 전송(Multipart) (0) 2022.08.08 Android 권한 요청 하기 (0) 2022.08.08 usesCleartextTraffic (0) 2022.08.08 OkHttp 접속 전송 RestfulApi (0) 2022.08.08 File 선택 화면 (0) 2022.08.07 RxAndroid (0) 2022.08.05 설치된 앱 목록 얻기 (0) 2022.08.02 Chronometer (0) 2022.07.30