Android:“OnStop / OnDestroy”的困境

时间:2017-05-20 18:05:32

标签: android xamarin gps

这是一个我无法找到解决方案的问题:

我的应用会创建一个虚假的位置对象。每次用户关闭应用程序时都需要销毁它。如果不是,它将保持完整,直到整个手机重新启动。

现在,我可以在OnDestroy()方法中放置一个DestroyLocationObject()函数,但在某些情况下,永远不会调用OnDestroy。即使用户完全完成了应用程序。

但是,总是调用OnStop。 但问题是,OnStop将被调用,即使用户不想完全关闭应用程序,只是将其放入后台,然后可能稍后返回。

如何确保在应用关闭时销毁我构建的位置对象。无论怎么关闭?

4 个答案:

答案 0 :(得分:0)

是否可以销毁onStop()方法中的对象并在onRestart()中创建一个新对象

答案 1 :(得分:0)

通常,要做的就是在onStart中创建对象并在onStop上销毁它。

这样,即使他们将应用程序放在后台,也会在他们回来时重新创建。

您想要这样做的问题是,如果Android内存不足,系统会破坏您的应用程序或删除内存对象。不要以为当他们来的时候,你的对象会是一样的。

另一个想法是,如果每次都需要相同的位置对象,请创建对象Serializable并保存,以便下次可以检索它。

答案 2 :(得分:0)

未调用onDestroy()的唯一情况是用户强行关闭您的应用,或者框架杀死您的应用以释放内存。当这些事情发生时,整个VM都会被破坏。因此,除非您持有系统资源(文件,套接字等),否则没有什么可以清理的。

答案 3 :(得分:0)

当用户按下主页按钮时调用onPause。你应该把你的方法(DestroyLocationObject())放在onPause中。