广播实现强制下线功能
创始人
2024-02-28 14:55:49
0

实现强制下线功能

  • 强制下线应该是一个比较常用的功能,比如QQ在比的地方被登陆了,就会强制比被挤下线.
  • 强制下线的功能还是比较简单的,只需要在界面上弹出一个框,告知用户无法再进行任何操作即可.只能点击确定然后跳转至登录界面.
  • 强制下线功能需要关闭所有的Activity,然后返回到登录界面
  • 先编写一个ActivityCollector类用来管理所有的Activity
object ActivityCollector {private val activities = ArrayList()fun addActivity(activity: Activity) {activities.add(activity)}fun removeActivity(activity: Activity) {activities.remove(activity)}fun finishAll() {for (activity in activities) {if (!activity.isFinishing()) {activity.finish()}}activities.clear()}
}
  • 然后创建一个BaseActivity作为所有Activity的父类
open class BaseActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)ActivityCollector.addActivity(this)}override fun onDestroy() {super.onDestroy()ActivityCollector.removeActivity(this)}
}
  • 编写一个用于登录的Activity以及对应的xml布局文件
class LoginActivity : BaseActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_login)login.setOnClickListener {//先从Edit当中获取账户名和密码val account = accountEdit.text.toString()val password = passwordEdit.text.toString()//验证账户名和密码的逻辑if (account == "admin" && password == "123456") {//如果账号和密码都没有问题,那么就跳转到MainActivityval intent = Intent(this, MainActivity::class.java)startActivity(intent)finish()} else {//使用Toast提示一段账号或者密码错误的文本Toast.makeText(this, "account or password is invalid", Toast.LENGTH_SHORT).show()}}}
}


  • 加入强制下线功能,修改activity_main.xml和MainActivity当中的代码
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)forceOffline.setOnClickListener {val intent = Intent("com.zb.broadcastbestpractice.FORCE_OFFLINE")sendBroadcast(intent)}}
}



  • 我们通过按钮的点击事件发送了一条广播,广播的值为com.zb.broadcastbestpractice.FORCE_OFFLINE,这条广播就意在通知程序强制用户下线
  • 强制用户下线的逻辑并不是写在MainActivity当中的,而是应该写在接收这条广播的BroadcastReceiver当中
  • 这样不管在任何的地方,只要发送一条广播,就可以完成强制下线得操作了
  • 创建一个BroadcastReceiver来接收这条强制下线的广播
  • 在BaseActivity当中动态注册一个BroadcastReceiver,因为所有的Activity都继承自BaseActivity,那么每个Activity都可以接收这条广播了.
  • 编写一个ForceOfflineReceiver继承BroadcastReceiver,在onReceive当中编写具体的广播逻辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZYGOAgZ-1669710312794)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E5%AE%89%E5%8D%93/image-20221129155650298.png)]

  • 注册和取消注册的代码逻辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hI6wCWyt-1669710312796)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E5%AE%89%E5%8D%93/image-20221129155807675.png)]

  • 在AndroidManifest.xml当中修改一下代码,将登录界面设置成为主界面

在这里插入图片描述

  • 效果展示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...