我正在扩展Application类,以与需要上下文的某些全局变量一起使用。我知道Application类中有onCreate()方法在活动中的任何其他onCreate()之前被调用,但是我想知道Application类中是否存在可以重写的onDestroy()或类似方法,因此我将能够在持久性内存中存储变量,取消注册侦听器并在应用进程被杀死之前将最后一条消息发送到服务器?如果没有,还有其他方法可以做到吗?
Answers:
在生产设备上没有针对Application类的此类回调。
您想要做的事情通常应该在更改后立即完成,或者在onPause()
相应的应用程序组件中完成。
首先:我是绝对的初学者
当我的应用退出时,我需要执行一些代码(是的,我在Android中不知道这样的事情),这对我来说可以正常工作:
-我有MyApplication,它扩展了Application。作为MyApplication的成员,有一个名为activeActivitiesNumber的AtomicInteger字段和一个公共的getter方法。
-所有应用程序活动都扩展了MyActivy(它本身扩展了Activity)
-MyActivity覆盖onCreate,onResume和onStop方法,并且还具有一个受保护的字段:Protected 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}
}
它有一个问题:如果您启动任何不属于您的应用程序的活动(例如,发送电子邮件),它将触发退出方法。
另一个问题(不知道它是否是真正的理论上的问题)是不能保证在某些情况下会调用onStop棕褐色。
希望对您有所帮助。
您可以registerActivityLifecycleCallbacks()
在Application类中使用以下回调(我建议创建一个AppLifecycleCallbacks
扩展的类ActivityLifecycleCallbacks
):
public interface ActivityLifecycleCallbacks {
void onActivityCreated(Activity activity, Bundle savedInstanceState);
void onActivityStarted(Activity activity);
void onActivityResumed(Activity activity);
void onActivityPaused(Activity activity);
void onActivityStopped(Activity activity);
void onActivitySaveInstanceState(Activity activity, Bundle outState);
void onActivityDestroyed(Activity activity);
}
Activity
或:Service