bmcreations / scrcast

Drop-in Android Screen Recording Library
https://bmcreations.github.io/scrcast/
Apache License 2.0
212 stars 26 forks source link

Exception lib usage in Fragment #59

Open zhambylgaziz opened 2 years ago

zhambylgaziz commented 2 years ago

Describe the bug It is a runtime exception when attempted to create instance of ScrCast about lifecycle.

java.lang.IllegalStateException: LifecycleOwner y@d1a71e8 is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.

Expected behavior Expected creation of ScrCast and later start recording.

To Reproduce Try to create instance of class in fragment (no matter onCreate, onActivityCreated, onViewCreate)

Logs/Screenshots image image

E/AndroidRuntime: FATAL EXCEPTION: main Process: kz.nurbank.app.dev, PID: 32114 java.lang.IllegalStateException: LifecycleOwner kz.crystalspring.ib_for_individuals.ui.activities.client_restrictions.ClientRestrictionsActivity@d1a71e8 is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED. at androidx.activity.result.ActivityResultRegistry.register(ActivityResultRegistry.java:123) at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:659) at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:668) at dev.bmcreations.scrcast.ScrCast.(ScrCast.kt:166) at dev.bmcreations.scrcast.ScrCast.(ScrCast.kt:42) at dev.bmcreations.scrcast.ScrCast$Companion.use(ScrCast.kt:375) at kz.crystalspring.ib_for_individuals.ui.accounts.accounts_binding.form.photo.face.ContactOperationFaceFragment.onCreate(ContactOperationFaceFragment.kt:86) at androidx.fragment.app.Fragment.performCreate(Fragment.java:2949) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:475) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:278) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:236) at android.app.ActivityThread.main(ActivityThread.java:8061) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

Version minSdk: 23 targetSdk: 30 libraryVersion: 0.3.0

eric-ampire commented 1 year ago

Any update about this issue @zhambylgaziz

eric-ampire commented 1 year ago

I thing the exception is triggered by this code

private val startRecording = activity.registerForActivityResult(RecordScreen()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        if (options.moveTaskToBack) activity.moveTaskToBack(true)
        val output = outputFile
        if (output != null) {
            startService(result, output)
        }
    }
}