在我的Android应用中,我执行了一些资源密集型操作。在应用程序被杀之前,我必须始终关闭/清理这些内容。据我所知,{@ 1}} / onStop()
生命周期方法无法保证在杀死应用程序时执行。因此,将close / cleanup操作放在这些方法中是不值得信赖的。 Android为实现此功能提供了哪些最佳选择?感谢。
答案 0 :(得分:1)
您应该使用onPause
代替onStop, onDestroy
。保证被称为。
答案 1 :(得分:1)
我建议在主活动上覆盖onDestroy()以在应用程序被销毁时执行代码,或者在用户退出应用程序时onStop()执行代码。
onDestroy()将在活动被销毁之前被调用。它可以被调用,因为活动正在完成(有人称为finish()),或者因为系统销毁活动实例以节省空间。可以使用isFinishing()方法区分这两种情况。
另一方面,在活动不再对用户可见时调用onStop()。这可能是因为它正在被销毁,或者是因为另一个活动已经恢复。如果活动回来与用户交互,则由onRestart()关注,如果此活动消失,则由onDestroy()关注。
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible i.e is it stopped now
}
@Override
protected void onDestroy() {
super.onDestroy();
//It is about to destroyed
}
答案 2 :(得分:1)
onPause()和onStop()。例如,如果您在onCreate()期间检测到错误并因此调用finish(),则可能会发生这种情况。但是,在这种情况下,您希望在onPause()和onStop()中执行的任何清理都不会被执行。
虽然onDestroy()是活动生命周期中的最后一个回调,但值得一提的是,这个回调可能并不总是被调用,不应该依赖它来破坏资源。最好在onStart()和onResume()中创建资源,并分别在onStop()和onPause中销毁它们。
有关活动生命周期的详细信息,请参阅Android开发人员指南。 https://developer.android.com/training/basics/activity-lifecycle/starting.html