实现强制功能下线的思路,只需要在界面上弹出一个对话框,让用户无法进行任何其它操作,必须要点击对话框的确定按钮,然后回到登录界面即可。可就是存在一个问题,当我们被通知强制下线可能正处于任何一个界面,难道需要在每个界面上都编写一个弹出对话框的逻辑?这个时候就需要用到我们上一章学习到的广播知识啦
强制下线功能需要先关闭所有的活动,然后回到登录界面
1、首先编写登录界面布局文件
2、接着判断获取到的账号和密码
3、编写TestActivity的活动代码
4、编写按钮发送一条值为com.example.broadcastbestpractice.FORCE_OFFLINE的广播,接收到这条广播意味着强制下线
5、最后思考如何在所有的活动界面里弹出一条强制下线的对话框
(1)、先创建一个管理活动控制器的ActivityCollector类,一键关闭所有活动
(2)、接着新建一个BaseActivity类,让LoginActivity和TestActivity继承它,调用ActivityCollector的addActivity()方法和removeActivity()方法
(4)、在BaseActivity里动态注册一个广播接收器,就可以解决在每个活动界面上创建一个广播接收器的问题;
(5)、建好广播接收器后,怎么注册广播呢?因为我们始终需要保证只有处于栈顶的活动才能接收到这条强制下线广播,非栈顶的活动不应该也没有必要去接收这个广播,所以写在onResume()和onPause()方法里很好的解决这个问题,当一个活动失去栈顶位置时就会自动取消广播接收器的注册。
根据郭霖大神的《第一行代码》学习,敬礼!