2018-03-28 利用广播实现强制下线功能

1.创建ActivityCollector类用于管理所有的活动(包含添加活动、移除活动、销毁所有活动)

2018-03-28 利用广播实现强制下线功能_第1张图片
ActivityCollector.java

2.创建BaseActivity类作为所有活动的父类

    在BaseActivity中动态注册了一个广播接收器

    (为什么在BaseActivity中动态注册呢?

        因为广播接收器里面需要弹出一个对话框来停止用户的正常操作,若使用静态注册广播接收器,是没有办法在onReceive()方法里弹出对话框的,并且我们也不可能在每一个活动中都注册一个动态广播接收器,由于所有的活动我们都让他继承BaseActivity,所以就在BaseActivity中来写。)

    首先我们定义了一个内部类ForceOfflineReceiver继承了BroadcastReceiver,重写了onRecieve()方法,在这个方法中弹出AlertDialog来提示用户已经被强制下线,并且用户点击对话框选项后,调用ActivityCollector中的finishAll()方法销毁所有活动,然后跳转到登陆页面。

   注册ForceOfflineReceiver这个广播接收器,重写了onResume()和onPause()方法,分别在方法里面注册和取消注册了ForceOfflineReceiver(PS:我们在这两个方法中写的目的:需要始终保证只有处于栈顶的活动才能够收到这条广播,非栈顶的活动不需要去接收,当一个活动失去栈顶位置的时候就会自动取消广播接收器中的注册)

2018-03-28 利用广播实现强制下线功能_第2张图片
1


2018-03-28 利用广播实现强制下线功能_第3张图片
2

3.触发强制下线(设置一个按钮的监听)

    在点击事件中发送一条广播,广播的值要与动态注册广播时addAction("")中的值相对应

你可能感兴趣的:(2018-03-28 利用广播实现强制下线功能)