300x250

반응형
300x250

 

CompileSdkVersion, targetSdkVersion 31로 변경

or

gradle  

       configurations.all {
            resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
        }

반응형
300x250


https://developer.android.com/training/basics/intents/result

 

활동에서 결과 가져오기  |  Android 개발자  |  Android Developers

개발자 앱 내의 활동이든 다른 앱의 활동이든 다른 활동을 시작하는 것이 단방향 작업일 필요는 없습니다. 다른 활동을 시작하고 다시 결과를 받을 수도 있습니다. 예를 들어, 앱에서 카메라 앱

developer.android.com

 

위 안드로이드 개발자 공식 홈페이지에 상세 설명 참조.

 

Why


- AndroidX Activity Fragment에 도입된 Activity Result API 사용 권장 

 

- Result 를 얻기 위해 Activity 을 시작할 때, 메모리 부족으로 인해 프로세스와 활동이 소멸될 수 있습니다. 

 

 

What


 

Activity Result API 

 

다른 Activity 을 실행하는 Code 위치에서 Result Callback 분리

Result Callback 은 Process 와 Actvity 을 다시 생성할 때,
사용할 수 있어야 하므로 다른 Activity 을 실행하는 로직이 사용자 입력 또는 비즈니스 로직을 기반으로 발생하더라도
Activity 이 생성될 때마다 Callback 을 무조건 등록해야 함. 

 

How to use ...


Overview 

인스턴스 메서드 사용 용도 자세히
ComponentActivity   ActivityResultContract  ActivityResultCallback을 가져와서 다른 활동을 실행하는 데 사용할 ActivityResultLauncher를 반환  
  registerForActivityResult ( ) Result Callback 등록  
ActivityResultContract   Result 생성하는데 필요한 입력 유형과 출력 유형을 정의  - 사진 촬영, 권한 요청 등과 같은 기본 인텐트 작업의 *1 Default Contacts을 제공 ( CaptureVideo, CreasteDocument ... ) 

- custom constract 정의할 수도 있다.
       
ActivityResultLauncher

다른 Activity 을 실행하거나 Result 요청 작업  
  GetContent.launch( I input ) Result 를 생성하는 프로세스가 시작. ActivityResultContract 유형과 일치하느입력을 가져옴 

 

1. Result 을 위한 Activity 실행

val getContent = registerForActivityResult(GetContent()) { uri: Uri? ->
    // Handle the returned Uri
    // 2. Result Callback
}

override fun onCreate(savedInstanceState: Bundle?) {
    // ...

    val selectButton = findViewById<Button>(R.id.select_button)

    selectButton.setOnClickListener {
        // Pass in the mime type you'd like to allow the user to select
        // as the input
        getContent.launch("image/*") // 1. Result 결과를 생성하는 프로세스가 시작.
    }
}

 

 

 

*1 Default Contacts : https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts

 

ActivityResultContracts  |  Android 개발자  |  Android Developers

ActivityResultContracts public final class ActivityResultContracts extends Object java.lang.Object    ↳ androidx.activity.result.contract.ActivityResultContracts A collection of some standard activity call contracts, as provided by android. Summary Ne

developer.android.com

 

 

2.별도의 클래스에서 Activity Result 수신

class MyLifecycleObserver(private val registry : ActivityResultRegistry)
        : DefaultLifecycleObserver {
    lateinit var getContent : ActivityResultLauncher<String>

    override fun onCreate(owner: LifecycleOwner) {
        getContent = registry.register("key", owner, GetContent()) { uri ->
            // Handle the returned Uri
        }
    }

    fun selectImage() {
        getContent.launch("image/*")
    }
}

class MyFragment : Fragment() {
    lateinit var observer : MyLifecycleObserver

    override fun onCreate(savedInstanceState: Bundle?) {
        // ...

        observer = MyLifecycleObserver(requireActivity().activityResultRegistry)
        lifecycle.addObserver(observer)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        val selectButton = view.findViewById<Button>(R.id.select_button)

        selectButton.setOnClickListener {
            // Open the activity to select an image
            observer.selectImage()
        }
    }
}
반응형
300x250

2021년 3월, Google은 2021년 7월 1일부터 디지털 상품 또는 서비스를 판매하는 개발자에게 매년 첫 1백만 달러(미화) 수익에 30%가 아닌 15%의 서비스 수수료가 부과된다고 발표했습니다.

오늘부터 Google Play Console에서 15% 서비스 수수료 등급 프로그램에 등록하실 수 있습니다.

등록하시려면 Play Console에 로그인한 후 다음과 같이 진행하시면 됩니다.


계정 그룹을 만드시고 연결된 개발자 계정이 있는지 Google에 알려주세요.


서비스 수수료 이용약관을 수락합니다.

프로그램이 올해 하반기에 시작되므로 기준 수익도 일할 조정됩니다. 따라서 첫 50만 달러(미화) 수익에 대해 30%가 아니라, 15%의 서비스 수수료가 적용됩니다. 7월 1일 이후에 등록이 완료되는 경우, 등록일로부터 수익이 계산됩니다.

 

 

반응형

+ Recent posts