Android 生命周期封装销毁

来源:互联网 发布:微商推广软件 编辑:程序博客网 时间:2024/06/15 18:36

Android中有一种情况是,当我们点击物理返回键的时候,我们的App要退出应用程序同时应该吧所有的活动Activity的所有生命周期给销毁。

实现方式如下:(实现Activity的生命周期)

public class BaseActivityLifeCallback implements Application.ActivityLifecycleCallbacks {    public final List<WeakReference<Activity>> weakReferences = new LinkedList<>();    private boolean isAppForeground;    @Override    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {        weakReferences.add(new WeakReference<>(activity));    }    @Override    public void onActivityStarted(Activity activity) {    }    @Override    public void onActivityResumed(Activity activity) {        isAppForeground = true;    }    @Override    public void onActivityPaused(Activity activity) {        isAppForeground = false;    }    @Override    public void onActivityStopped(Activity activity) {    }    @Override    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {    }    @Override    public void onActivityDestroyed(Activity activity) {        final Iterator<WeakReference<Activity>> it = weakReferences.iterator();        while (it.hasNext()) {            final WeakReference<Activity> weakReference = it.next();            if (weakReference.get() == null) {                it.remove();            } else if (weakReference.get() == activity) {                it.remove();            }        }    }    void finishAll() {        for (WeakReference<Activity> weakReference : weakReferences) {            final Activity activity = weakReference.get();            if (activity != null) {                activity.finish();            }        }        weakReferences.clear();    }    public Activity getTopActivity() {        if (weakReferences.size() > 0) {            return weakReferences.get(weakReferences.size() - 1).get();        } else {            return null;        }    }    public void popTopActivity() {        final Iterator<WeakReference<Activity>> it = weakReferences.iterator();        final WeakReference<Activity> weakReference = it.next();        final Activity activity = weakReference.get();        if (activity == null) {            it.remove();        } else {            activity.finish();        }    }    public boolean isAppForeground() {        return isAppForeground;    }}

使用方式:

  BaseActivityLifeCallback  mActivityLifeCallback = new BaseActivityLifeCallback();  registerActivityLifecycleCallbacks(mActivityLifeCallback);


程序结束时 调用 相应的方法。


原创粉丝点击