1.创建ActivityCollector类用于管理所有的活动(包含添加活动、移除活动、销毁所有活动)
2.创建BaseActivity类作为所有活动的父类
在BaseActivity中动态注册了一个广播接收器
(为什么在BaseActivity中动态注册呢?
因为广播接收器里面需要弹出一个对话框来停止用户的正常操作,若使用静态注册广播接收器,是没有办法在onReceive()方法里弹出对话框的,并且我们也不可能在每一个活动中都注册一个动态广播接收器,由于所有的活动我们都让他继承BaseActivity,所以就在BaseActivity中来写。)
首先我们定义了一个内部类ForceOfflineReceiver继承了BroadcastReceiver,重写了onRecieve()方法,在这个方法中弹出AlertDialog来提示用户已经被强制下线,并且用户点击对话框选项后,调用ActivityCollector中的finishAll()方法销毁所有活动,然后跳转到登陆页面。
注册ForceOfflineReceiver这个广播接收器,重写了onResume()和onPause()方法,分别在方法里面注册和取消注册了ForceOfflineReceiver(PS:我们在这两个方法中写的目的:需要始终保证只有处于栈顶的活动才能够收到这条广播,非栈顶的活动不需要去接收,当一个活动失去栈顶位置的时候就会自动取消广播接收器中的注册)
3.触发强制下线(设置一个按钮的监听)
在点击事件中发送一条广播,广播的值要与动态注册广播时addAction("")中的值相对应