如何检测活动堆栈是否为空以及活动堆栈大小?

时间:2016-03-19 01:03:37

标签: android back-stack fragment-backstack

一种方法是在共享偏好中传递捆绑/存储,通过该共享偏好获取此信息。有没有这样的方法来达到这个目的?在片段中,您可以执行getBackStackEntryCount。

1 个答案:

答案 0 :(得分:0)

在Application类中,为Activity生命周期事件注册一个侦听器:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                // add to stack                
            }

            @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) {
                // remomve from stack
            }
        });
    }
}

然后你只需要在列表中跟踪你的活动(不要把活动本身,把名字或弱引用放在它上面)。您可以根据需要监控其他事件。