如果我们的app支持单点登录、账户踢出功能,那么在接到后端push的需要踢出当前用户的消息后就需要弹出一个dialog。这种dialog出现的时机并不确定,而我们知道dialog的构建和activity是强相关的,解决方案是永远保存当前的activity对象。
首先,在application中持有当前的activity对象:
public class App extends Application {
private AppCompatActivity curActivity;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
curActivity = (AppCompatActivity) activity;
}
// ...
@Override
public void onActivityDestroyed(Activity activity) {
curActivity = null;
}
});
}
}
复制代码
然后,定义弹出dialog的方法:
public class App extends Application {
private AppCompatActivity curActivity;
public void showDialog(String title, String message) {
EasyDialog.builder(curActivity)
.setTitle(title)
.setMessage(message)
.setPositiveButton("ok", null)
.build()
.show(curActivity.getSupportFragmentManager());
}
}
复制代码
最后,在需要的时候调用application中的showDialog()来完成弹窗:
((App) getApplication()).showDialog("全局弹窗", "可在任意时机弹出一个dialog")
复制代码