比如说,有这么一个功能,我有一个正在后台运行的任务,当这个任务结束时,不管在哪个页面(自己的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方法就可以用了!