关键词:Broadcast, 生命周期,继承

本项目基本思路:

1.先创建一个ActivityCollector类用于管理所有的活动;

2.然后创建一个BaseActivity类作为所有活动的父类:

父类功能有二:

其一,用于辅助统筹管理本项目的所有活动。调用ActivityCollector类的方法,如类中的onCreate和onDestroy方法,所有从父类派生出去的子类,在创建时会被加入ActivityCollector的数组activities里面,销毁时则会从里面被移除;用数组activities统筹本项目的活动,可以很容易实现销毁所有活动的功能;

其二,随后我们将重写本类的onResume和onPause方法,所有从父类派生出去的子类,在栈顶状态(onResume()方法执行之后的处于准备交互的状态)都会注册一个接收器,接收广播信息,收到广播信息后执行onReceive方法,弹出对话框,随后销毁所有活动,重新启动LoginActivity,实现强制下线;在失去栈顶位置的时候,则将接收器销毁;这样强制下线的功能就不会依附于任何的界面,不管是在程序的任何地方,只需要发出这样一条广播,就可以完成强制下线的操作了;

3.新建LoginActivity,作为登录界面,用户输入密码和账号,正确则通过跳转到MainActivity,失败则Toast提示;

4.MainActivity,简单的一个按钮,用于发送广播;


源码地址(码云): Lwp/AndroidDemo - 码云 Gitee.com

参考文献:《第一行代码(第2版)》


主要步骤:

先创建一个ActivityCollector类用于管理所有的活动:

右键包->new->Java Class:

然后创建一个BaseActivity类作为所有活动的父类:

本父类功能有二:

其一,用于辅助统筹管理本项目的所有活动。如类中的onCreate和onDestroy方法,所有从本类派生出去的子类,在创建时会被加入ActivityCollector的数组activities里面,销毁时则会从里面被移除;

其二,随后我们将重写本类的onResume和onPause方法,所有从本类派生出去的子类,在栈顶状态都会注册一个接收器,在失去栈顶位置的时候,则将接收器销毁;

新建LoginActivity:

布局代码:

布局预览图:

LoginActivity代码:

MainActivity的代码,这里不需要什么花里花俏的功能,只需要弄一个按钮实现强制下线的功能就可以了:

修改BaseActivity,动态注册一个广播接收器:重写本类的onResume和onPause方法,所有从本类派生出去的子类,在栈顶状态都会注册一个接收器,在失去栈顶位置的时候,则将接收器销毁;

最后将主活动设置为LoginActivity而不再是MainActivity:



最后上运行结果图:

密码或账号输入错误时弹出提示:

输入正确,进入MainActivity:

点击按钮,弹出对话框,强制下线:



广播的最佳实践——实现强制下线功能(Android_Broadcast)...相关推荐

  1. java 强制下线_广播的最佳实践——实现强制下线功能(Android_Broadcast)

    关键词:Broadcast, 生命周期,继承 本项目基本思路: 1.先创建一个ActivityCollector类用于管理所有的活动: 2.然后创建一个BaseActivity类作为所有活动的父类: ...

  2. android 强制下线功能,Android学习之基础知识八—Android广播机制实践(实现强制下线功能)...

    强制下线功能算是比较常见的了,很多的应用程序都具备这个功能,比如你的QQ号在别处登录了,就会将你强制挤下线.实现强制下线功能的思路比较简单,只需要在界面上弹出一个对话框,让用户无法进行任何操作,必须要 ...

  3. Android通过广播实现强制下线功能

    Android通过广播实现强制下线功能 我们首先定义一个activity集合类,在这个类里面主要添加三个方法,分别是 1.添加activity 2.删除activity 3.关闭所有activity ...

  4. Android开发(2) | 广播 Broadcast 的应用——强制下线功能

    文章目录 功能简介 关闭所有活动 登陆界面 发送强制下线的广播 广播接收器 AndroidManifest.xml 运行结果 功能简介 强制下线功能只需要弹出一个对话框,让用户只能点击确定按钮,回到登 ...

  5. android#boardcast#广播实现强制下线功能

    参考自<第一行代码>--郭霖 强制下线功能需要先关闭掉所有的活动(Activity),然后回到登录界面.先创建一个ActivityCollector类用于管理所有的活动,代码如下所示: p ...

  6. Android-浅谈广播机制,实现强制下线功能

    首先,复习一下,什么是广播呢? 顾名思义,广播就像我们上学的时候每个班级里的喇叭一样,这些喇叭都是接入到学校的总的一个地方,比如说广播室啊什么的.一旦有什么通知,就会播放一条让全校师生都知道的广播.类 ...

  7. Java实现第二次登陆强制下线_Android登陆页面记住密码以及强制下线功能的实现...

    这篇文章主要是巩固一下前面所学的SharedPreferences存储数据以及广播接收器.如果对这两个部分不熟悉的话可以先看一下Android数据存储(二)以及Android广播接收器(二)由于这篇文 ...

  8. android仿qq强制下线服务器,qq强制下线(实现一个类似QQ的强制下线功能)

    qq强制下线(实现一个类似QQ的强制下线功能),哪吒游戏网给大家带来详细的qq强制下线(实现一个类似QQ的强制下线功能)介绍,大家可以阅读一下,希望这篇qq强制下线(实现一个类似QQ的强制下线功能)可 ...

  9. 仿QQ异地登录强制下线功能的实现

    一,仿QQ异地登录强制下线功能 效果:同一个账号,最后一个登录的用户会把前一个登录后的用户顶掉,被迫下线! 1,剖析登录原理 登录的后台逻辑 准备一张账户信息表(账号,密码,是否禁用等字段) 查询账号 ...

最新文章

  1. EI:天大王灿+昆士兰郭建华揭示生物气溶胶是猪场耐药基因的重要传播途径
  2. 20162329 2017-2018-1 《程序设计与数据结构》第十一周学习总结
  3. hello cnblogs(从wordpress、收费空间到博客园)
  4. JVM实用参数(七)CMS收集器
  5. python 滑块验证码_python selenium 淘宝滑块验证码 问题
  6. 使用 iPerf 测试 Azure VM 之间的网速
  7. springboot很多以来jar包是在外部当时候,如何打dockerfile到阿里云
  8. c语言宏定义比较三个数大小,C语言中两个宏进行大小对比,其中一个没有定义,这种行为如何定义。...
  9. Webpack实战(五):轻松读懂Webpack如何分离样式文件
  10. Spring整合RabbitMQ
  11. A10负载均衡设备基础配置
  12. python获取gps_Python GPS模块:读取最新的GPS D
  13. 如何在EXCEL中只复制可见单元格(忽略隐藏行/列)
  14. Oracle + PlSql 下载安装配置
  15. windows10 中微信(UWP)版本不显示通知消息
  16. linux vim 修改 只读文件,linux下vi编辑只读文档无法保存的解决方法
  17. 中芯国际三季度营业收入创新高;德州仪器与德赛西威签署合作备忘录 | 全球TMT...
  18. 2月全球搜索引擎市场份额之争:百度战胜Google夺冠
  19. 量子前沿英雄谱|IonQ联合创始人兼首席技术官Jungsang Kim
  20. 什么是Ingress

热门文章

  1. jQuery 1.9使用$.support替代$.browser的使用方法
  2. sh脚本异常:bad interpreter: No such file or directory
  3. Flex 容器基本概念
  4. checkbox的常见问题
  5. 工作中Oracle常用的SQL
  6. C语言中struct, union, enum 三大复合数据类型
  7. openwrt开发过程简介
  8. .NET 将文本转换成语音 (转)
  9. 小宝机器人的储存容量_新iPad Pro储存越来越大:甚至到1T!您应该购买哪种存储容量呢?...
  10. 一个页面中多个window.onload = function(){}冲突问题解决思路