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

网友投稿 1140 2022-09-28

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

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

​​2种判断(获取)栈顶activity的方法_u014620028的专栏-_android获取栈顶activity​​

第一种方法:获取栈顶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 outState) { } }); } /** * 获取实例 * @return */ public static MyApplication getInstance() { return mInstance; } /** * 公开方法,外部可通过 MyApplication.getInstance().getCurrentActivity() 获取到当前最上层的activity */ public Activity getCurrentActivity() { return app_activity; }

注意:initGlobeActivity()、getInstance()、getCurrentActivity() 这3个方法

使用方法: 在base的展示dialog方法中:

Activity currentActivity = MyApplication.getInstance().getCurrentActivity();Dialog dialog = new Dialog(currentActivity, R.style.PushDialog);

————————————————

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:直播预告 | 全新定义业务观测新范式,让稳定更有力量
下一篇:yum安装最新版php7
相关文章

 发表评论

暂时没有评论,来抢沙发吧~