Java Android对所有活动使用唯一的onDestroy
我有一个具有多个活动的应用程序,销毁时要执行的操作实际上是相同的,无论此时的活动是什么(删除一些数据并执行HTTP调用)。Java Android对所有活动使用唯一的onDestroy,java,android,refactoring,ondestroy,Java,Android,Refactoring,Ondestroy,我有一个具有多个活动的应用程序,销毁时要执行的操作实际上是相同的,无论此时的活动是什么(删除一些数据并执行HTTP调用)。 是否有办法让所有活动共享onDestroy方法 另一个解决方案是将一个方法分解到其他静态类中,并让每个活动在销毁过程中调用它,但类似特征的行为实际上会更好。使用singleton类并创建静态方法,在其中执行您想做的事情,并在onDestroy中调用此方法。创建一个抽象的BaseActivity,重写onDestroy,所有其他活动都应该扩展BaseActivity 如果您所
是否有办法让所有活动共享
onDestroy
方法
另一个解决方案是将一个方法分解到其他静态类中,并让每个活动在销毁过程中调用它,但类似特征的行为实际上会更好。使用singleton类并创建静态方法,在其中执行您想做的事情,并在onDestroy中调用此方法。创建一个抽象的BaseActivity,重写onDestroy,所有其他活动都应该扩展BaseActivity
如果您所描述的是典型的OOP特性,那么为什么要使用单例、静态、工厂等呢 最简单的方法是创建应用程序类并注册生命周期回调
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
android:allowBackup="true"
android:name=".MyApp"
android:icon="@mipmap/ic_launcher"
从您的描述中,我了解到您需要一个通用的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文件的应用程序标记中添加属性:
android:name=“com.demo.application.AppGlobal”
请告诉我您的体验。一种方法是您可以使用ActivityLifecycleCallbacks。在应用程序类中注册它,然后在那里执行任务。要注册回调,您可以看到以下答案:让Android Studio创建类非常容易,我不想每次都更改签名:DYea但即使您使用Android Studio创建新的活动向导,您也可以从下拉列表中选择父活动:)