我有一个包含多个活动的应用程序,无论当时活动是什么(删除一些数据并执行HTTP调用),在销毁时执行的操作实际上是相同的。
有没有办法让所有活动共享onDestroy
方法?
另一种解决方案是在一些其他静态类中对一个方法进行分解,并让每个Activity在销毁期间调用它,但类似特征的行为实际上会更好。
答案 0 :(得分:2)
根据你的描述,我知道你需要一个常见的onDestroy()方法,当调用onDestroy()时,它将被所有活动调用。
以下是代码:
package com.demo.application;
import android.app.Activity;
import android.app.Application;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
public class AppGlobal extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
} //End of onCreate
}
您需要在manifest.xml文件的application标记中添加属性: 机器人:名称=" com.demo.application.AppGlobal"
试着告诉我你的经历。
答案 1 :(得分:1)
创建一个抽象的BaseActivity,覆盖onDestroy,你的所有其他活动应该只扩展BaseActivity吗?
为什么选择单身人士,静力学,工厂等,如果你所描述的是经典的OOP特征? :)
答案 2 :(得分:0)
使用singleton类并创建静态方法,在其中执行您想要执行的操作,并在onDestroy中调用此方法。
答案 3 :(得分:0)
最简单的方法是创建一个Application类并注册生命周期回调。
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
//Perform common action here
}
});
}
}
在清单中添加Application类。
<application
android:allowBackup="true"
android:name=".MyApp"
android:icon="@mipmap/ic_launcher"