onStop() not getting called when I press the back button

前端 未结 3 1622
灰色年华
灰色年华 2021-02-15 23:14

Is this normal.

The docs say

\"The onStart() and onStop() methods can be called multiple times, as the activity alternates between being visible and hidden to th

相关标签:
3条回答
  • 2021-02-16 00:01

    You want onPause(), not onStop(). onStop is called just before the activity is destoryed, when the system is low on memory. onPause is called whenever the user navigates away from your activity. See diagram at http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle.

    0 讨论(0)
  • 2021-02-16 00:06

    onStop() is called each time Activity is no longer visible. So when back button is pressed onStop() is actually called.

    Easy check, - need to put break points in onStop()/onStart() callbacks and run debugging session.

    BUT note that onStop() of current Activity will most probably be called AFTER onStart()/onResume() of Activity to which you are switching.

    Hence, I think you were trying to update something in onStop() of 1st Activity and were expecting to fetch updated data in onStart() of 2nd Activity which caused errors.

    0 讨论(0)
  • 2021-02-16 00:12

    If you still need those to get called for your activity instance when a new instance is created, you can use this hacky solution. Just implement your logic in #doStopOperation() and #doDestroyOperation() instead of #onStop() and #onDestroy() - and be sure to call super#onStop() and super#onDestroy() from your overridden methods. Obviously when extending this activity, you don't need to extend the AppCompatActivity, you can use the regular activity instead. This works for me in a production build, so hopefully it will help.

    I guess you could write a timer hack as well to invoke stop and destroy even when no new instance is created, but that's up to you.

    0 讨论(0)
提交回复
热议问题