Android:onDestroy()或Application类中的类似方法

我正在扩展Application类来处理一些需要上下文的全局variables。 我知道应用程序类中的onCreate()方法在活动中的任何其他onCreate()之前被调用,但是我想知道Application类中是否有onDestroy()或类似的方法可以被覆盖,这样我将能够将variables存储在永久内存中,取消注册监听器并在应用程序进程被终止之前将最后一条消息发送到服务器? 如果没有,有没有其他办法可以做到这一点?

在Application类的生产设备上没有这样的callback。

您要做的事情通常应该在更改完成后立即完成,或在相应应用程序组件的onPause()中完成。

在android中,没有closures应用程序的概念。 用户只是离开了:这是您唯一会意识到的事件( onPause()在一个活动中)。 您应该调整您的应用程序devise以适应此生命周期。

你不应该试图find解决方法,它可以让事情变得更糟:如果用户用完电池,或者如果你的应用程序崩溃? 所有的数据将会丢失。 我不知道您使用的是哪种数据,但这通常会导致Google Play的评分较差。 即使不好的事情发生,所有的数据应该已经被保存了( AsyncTasks对此很好,不要害怕每次更改都要启动一个来不断的保存数据)。

首先:我是一个绝对的初学者

我需要执行一些代码,当我的应用程序退出(是的,我不知道在Android这样的事情),这对我工作正常:

我有MyApplication扩展应用程序。 作为MyApplication的成员,有一个名为activeActivitiesNumber的AtomicInteger字段和一个公共getter方法。

– 所有应用程序活动扩展MyActivy(本身扩展活动)

-MyActivity覆盖onCreate,onResume和onStop方法,并且还有一个受保护的字段:受保护的MyAppication mAppState;

 a) OnCreate(){ super.onCreate(); mAppState=this.getApplication();...} b) onResume(){ super.OnResume(); myAppState.getactiveActivitiesNumber().addAndGet(1) ....} c) onStop(){ super.onStop() if (myAppStatemyAppState.getactiveActivitiesNumber()..decrementAndGet()<1){ ...call exiting code (for instance a public method defined in MyApplication} } 

它有一个问题:如果你开始任何活动,棕褐色不属于你的应用程序(例如发送电子邮件),它会触发退出方法。

另一个问题(不知道它是否是一个真正的理论的问题)是,在某些情况下不能保证tan将被调用。

希望这个帮助。

另一个选项是在应用程序的第一个屏幕上覆盖onDestroy(),所以在你的程序被杀之前就会调用它。