Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android对所有活动使用唯一的onDestroy_Java_Android_Refactoring_Ondestroy - Fatal编程技术网

Java Android对所有活动使用唯一的onDestroy

Java Android对所有活动使用唯一的onDestroy,java,android,refactoring,ondestroy,Java,Android,Refactoring,Ondestroy,我有一个具有多个活动的应用程序,销毁时要执行的操作实际上是相同的,无论此时的活动是什么(删除一些数据并执行HTTP调用)。 是否有办法让所有活动共享onDestroy方法 另一个解决方案是将一个方法分解到其他静态类中,并让每个活动在销毁过程中调用它,但类似特征的行为实际上会更好。使用singleton类并创建静态方法,在其中执行您想做的事情,并在onDestroy中调用此方法。创建一个抽象的BaseActivity,重写onDestroy,所有其他活动都应该扩展BaseActivity 如果您所

我有一个具有多个活动的应用程序,销毁时要执行的操作实际上是相同的,无论此时的活动是什么(删除一些数据并执行HTTP调用)。
是否有办法让所有活动共享
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创建新的活动向导,您也可以从下拉列表中选择父活动:)