Почему в Android появляется сообщение «Невозможно приостановить действие IllegalStateException: Restarter должен быть создан только на этапе инициализации владельца»? - PullRequest
10 голосов
/ 06 апреля 2019

Я использую FragmentActivity и иногда на Crashlytics я могу видеть исключение Неустранимое исключение: java.lang.RuntimeException: Невозможно приостановить действие

Ниже приведена onPause моей FragmentActivity

@Override
protected void onPause() {
    super.onPause();
    if (EventBus.getDefault().isRegistered(this))
        EventBus.getDefault().unregister(this);
}

Вот трассировка стека этой аварии.

Fatal Exception: java.lang.RuntimeException: Unable to pause activity {com.avail.easyloans.android/com.avail.easyloans.feature.marketplace.activities.ActivityMarketplace}: java.lang.IllegalStateException: Restarter must be created only during owner's initialization stage
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3471)
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3430)
       at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3402)
       at android.app.ActivityThread.access$1300(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1416)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:157)
       at android.app.ActivityThread.main(ActivityThread.java:5601)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by java.lang.IllegalStateException: Restarter must be created only during owner's initialization stage
       at androidx.savedstate.SavedStateRegistryController.performRestore(SavedStateRegistryController.java:59)
       at androidx.fragment.app.Fragment.performCreate(Fragment.java:2522)
       at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:834)
       at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1227)
       at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1293)
       at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2612)
       at androidx.fragment.app.FragmentManagerImpl.dispatchPause(FragmentManagerImpl.java:2588)
       at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:279)
       at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:406)
       at com.avail.easyloans.feature.marketplace.activities.ActivityMarketplace.onPause(ActivityMarketplace.java:351)
       at android.app.Activity.performPause(Activity.java:6467)
       at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1312)
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3457)
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3430)
       at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3402)
       at android.app.ActivityThread.access$1300(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1416)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:157)
       at android.app.ActivityThread.main(ActivityThread.java:5601)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)

Что может быть причиной этого и как я могу это сделатьисправить эту проблему?

* Я не могу воспроизвести эту ошибку.

1 Ответ

0 голосов
/ 18 июня 2019

если вы используете fragmnet в активности, вам нужно удалить все фрагменты в активности в начальной активности.

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main_root)

        while (supportFragmentManager.backStackEntryCount > 0) {
            supportFragmentManager.popBackStackImmediate()
        }

}

Вы можете проверить по включению в Настройки -> Опция разработчика -> Не сохранять действия '

...