在所有活动开始之前以及所有活动停止之后的监听器?

时间:2017-09-19 02:45:38

标签: java android

如果我想在任何活动开始之前运行一些脚本,并且在所有活动停止之后,我会在android中放置这样的监听器吗?

我考虑过把它放在Android Application类中,只需将方法放在onCreateonSaveInstanceState中 - 但我不确定它们会在所有活动之前和之后被调用< / p>

1 个答案:

答案 0 :(得分:1)

不幸的是,在Application类中,当应用程序停止时没有回调,但我认为你可以试试这段代码:

&LT;&LT;这里是旧代码&gt;&gt;

<强>更新: 应用程序类代码:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        startService(new Intent(this, Monitor.class));
    }
}

后台服务代码:

public class Monitor extends Service implements Application.ActivityLifecycleCallbacks {

    private static final String TAG = "Monitor";

    int mActivitiesCount = 1; // At the moment when service started, the main Activity is already opened

    public Monitor() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
        getApplication().registerActivityLifecycleCallbacks(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        getApplication().unregisterActivityLifecycleCallbacks(this);
        super.onDestroy();
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {
        mActivitiesCount++;
        Log.d(TAG, "onActivityCreated: count: " + mActivitiesCount);
    }

    @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 bundle) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        mActivitiesCount--;
        Log.d(TAG, "onActivityDestroyed: count: " + mActivitiesCount);
        if (mActivitiesCount == 0) {
            Log.d(TAG, "All activities was destroyed");
            // do something
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}