Android为所有活动使用唯一的onDestroy

时间:2017-12-11 10:40:04

标签: java android refactoring ondestroy

我有一个包含多个活动的应用程序,无论当时活动是什么(删除一些数据并执行HTTP调用),在销毁时执行的操作实际上是相同的。 有没有办法让所有活动共享onDestroy方法?

另一种解决方案是在一些其他静态类中对一个方法进行分解,并让每个Activity在销毁期间调用它,但类似特征的行为实际上会更好。

4 个答案:

答案 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"