2种判断(获取)栈顶activity的方法

有时候,需要获取当前位于栈顶的activity的实例。这里介绍2种方法,以及各自适用的场景。最后有demo测试数据以供参考

第一种方法:获取栈顶activity的实例
应用场景:项目中,activity都继承于一个BaseActivity,在这个base中,有个广播接收器,收到广播,就弹出一个dialog。现打开多个activity,这个时候,通过三方推送等方法,发出一个广播,base接收到。因为只需要在栈顶的activity弹出,而不是每个activity都弹出,所以,需要获取栈顶activity的实例(即上下文,传给dialog的构造方法),而不能简单的传个this,否则,会导致每个activity都有dialog弹出。

获取方法:
在application中:

public class MyApplication extends Application {
   

    private static MyApplication mInstance;
    private Activity app_activity = null;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
        initGlobeActivity();
    }


    private void initGlobeActivity() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                app_activity = activity;
                Log.e("onActivityCreated===", app_activity + "");
            }

            @Override
            public void onActivityDestroyed(Activity activity) {
                app_activity = activity;
                Log.e("onActivityDestroyed===", app_activity + "");
            }

            /** Unused implementation **/
            @Override
            public void onActivityStarted(Activity activity) {
                app_activity = activity;
                Log.e("onActivityStarted===", app_activity + "");
            }

            @Override
            public void onActivityResumed(Activity activity) {
                app_activity = activity;
                Log.e("onActivityResumed===", app_activity + "");
            }

            @Override
            public void onActivityPaused(Activity activity) {
                app_activity = activity;
                Log.e("onActivityPaused===", app_activity + "");
            }

            @Override
            public void onActivityStopped(Activity activity) {
                app_activity = activity;
                Log.e("onActivityStopped===", app_activity + "");
            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle ou
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值