ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • File 선택 화면 (deprecated startActivityForResult)
    Search: Android Android 2022. 8. 7. 18:33

    deprecated startActivityForResult


    'startActivityForResult(android.content.Intent, int)' is deprecated 

     

    Deprecated된 이유

    결과를 얻기 위한 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

    FileSelEx2.7z
    10.67MB

    '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

    댓글