Android 全局Activity or 全局Dialog

本文介绍了一种在Android应用中获取当前显示Activity的方法,并通过注册Activity生命周期回调实现跨页面显示对话框的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     比如说,有这么一个功能,我有一个正在后台运行的任务,当这个任务结束时,不管在哪个页面(自己的App内)我都想弹出一个对话框来提示用户.那就可以用到本文提供的方法

     在说之前 首先普及一下context,大家都知道Context有三种,Activity的Context,Application的Context,Service的Context.不少人以为他们都是相同的,其实不然,下图可以很好的说明他们的区别.图片来源于网络.

                                             

    从上图可得知,如果想show a Dialog 那就不能用Application提供的Context,那如何得到一个全局的Activity的Context呢?换句话说,我们如何得到正在当前显示的Activity呢?其实在Application中有一个registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks call);方法,可以监听App内Activity的启动与销毁. 我们可以在Appliction中的onCreate方法中注册这个监听

this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

			@Override
			public void onActivityStopped(Activity activity) {

			}

			@Override
			public void onActivityStarted(Activity activity) {
				Activities.activity = activity;
			}

			@Override
			public void onActivitySaveInstanceState(Activity activity,
					Bundle outState) {

			}

			@Override
			public void onActivityResumed(Activity activity) {
				Activities.activity = activity;
			}

			@Override
			public void onActivityPaused(Activity activity) {

			}

			@Override
			public void onActivityDestroyed(Activity activity) {

			}

			@Override
			public void onActivityCreated(Activity activity,
					Bundle savedInstanceState) {
				Activities.activity = activity;
			}
		});

	public static class Activities {
		public static Activity activity;
	}

至此,我们的全局Activity已经拿到了,然后在工具类中写一下showDialog方法就可以用了!

   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值