Android实现强制下线(不同应用之间)功能————简易微信聊天示例
具体需要看具体的实际情况,这是曾经遇到的问题以及解决方案
实现强制下线(不同应用之间)功能----简易微信聊天示例
强制下线功能需要先关闭所有活动,然后在回到登录界面。
新建一个ActivityCollector类管理所有活动下见代码段:
//需要用到一个专门的集合类对所有的活动进行管理
public class ActivityCollector {public static List<Activity> activities = new ArrayList<>();//通过一个List来暂存活动public static void addActivity(Activity activity){activities.add(activity);//提供了一个addActivity()方法用于向List中添加一个活动}public static void removeActivity(Activity activity){activities.remove(activity);//提供了一个addActivity()方法用于从List中移除一个活动}public static void finishAll(){//finish()方法用于将List中存储的活动全部销毁掉for (Activity activity : activities){if (!activity.isFinishing()){activity.finish();}}activities.clear();}
}
在BaseSActivity.java中调用ActivityCollector方法
首先需要我们希望在另外一个应用点击了[强制下线]的按钮时,当前应用不论在哪个页面,都可以接受到此类广播。如果在每个活动上都注册一个广播接受器时,常会导致代码冗余。
答案其实很明显,只需新建一个类(命名:BaseSActivity.java),注册一个广播接受器,并且,让所有活动都继承BaseSActivity.java这样强制下线的功能就不会依附任何界面。
在同一个Model下的应用,接受广播是使用onResume()和onPause()方法注册和取消注册广播。因为页面跳转的时候,不会调用onPause()方法,可以实现需求。
如果在不同Model之间联系的应用,使用上述方法会出现问题。
采用动态注册的广播接受器
例如:一个应用:发送广播乙应用:接受广播
A应用发送广播,B应用等待接收。当执行切换程序(A→B)的操作时,系统就会调用的的onPause()方法。此时,广播已经被注销。在B应用也就无法接收来自甲应用的广播。
因此,选择在的的onCreate()和onDestory()方法执行广播的注册和注销。
以下是部分代码:
一个应用:发送广播
forceOffline.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent =new Intent("com.example.danser.mywechat.ForceOfflineReceiver");sendBroadcast(intent);}});
乙应用:接受广播
public class BaseActivity extends AppCompatActivity {private ForceOfflineReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityCollector.addActivity(this);IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("com.example.danser.mywechat.ForceOfflineReceiver");//接受广播receiver = new ForceOfflineReceiver();//注册广播器registerReceiver(receiver,intentFilter);}@Overrideprotected void onDestroy() {///取消注册广播器super.onDestroy();if (receiver != null){unregisterReceiver(receiver);receiver = null;}ActivityCollector.removeActivity(this);}class ForceOfflineReceiver extends BroadcastReceiver{@Overridepublic void onReceive(final Context context, Intent intent) {AlertDialog.Builder builder = new AlertDialog.Builder(context);//使用Builder构建一个对话框builder.setTitle("提示");builder.setMessage("你的微信号在其他设备上登录," +"如不是本人操作,请及时更改密码!");builder.setCancelable(false);//将对话框设置为不可取消builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ActivityCollector.finishAll();//销毁所有活动Intent i = new Intent(context, LoginActivity.class);context.startActivity(i);//重启登录界面}});builder.show();}}
}
接下来需要,好好补遗漏的知识了。
Android实现强制下线(不同应用之间)功能————简易微信聊天示例相关推荐
- 阅读软件怎么添加书源_微信聊天怎么添加话题功能?微信聊天添加话题方法[多图]-软件资讯...
微信大家很熟悉,在不断的研究过程中微信也推出了非常多的实用功能,最近微信又在测试一个新的功能,可以在聊天的过程中添加#号,然后就可以直接关联到有关的信息,行程一个超链接,这样大家就可以直接点击进入一个 ...
- 百度 android geocoding,百度地图经纬度批量查找功能XGeocoding使用手册(示例代码)
<XGeocoding使用手册> 1.下载XGeocoding V2 http://www.gpsspg.com/xgeocoding/download/ 2.解压XGeocoding_v ...
- 微信小程序php签到功能,简易微信小程序签到功能
一.效果图 (此图片来源于网络,如有侵权,请联系删除! ) 点击签到后 (此图片来源于网络,如有侵权,请联系删除! ) 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用 ...
- Android编写一个登录界面,利用数据库实现记住密码,注册账号,强制下线,以及类似QQ的下拉列表登录功能
首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧! 1.建立一个所有活动的父类,继承自Appcompat ...
- android仿qq强制下线服务器,qq强制下线(实现一个类似QQ的强制下线功能)
qq强制下线(实现一个类似QQ的强制下线功能),哪吒游戏网给大家带来详细的qq强制下线(实现一个类似QQ的强制下线功能)介绍,大家可以阅读一下,希望这篇qq强制下线(实现一个类似QQ的强制下线功能)可 ...
- Android-浅谈广播机制,实现强制下线功能
首先,复习一下,什么是广播呢? 顾名思义,广播就像我们上学的时候每个班级里的喇叭一样,这些喇叭都是接入到学校的总的一个地方,比如说广播室啊什么的.一旦有什么通知,就会播放一条让全校师生都知道的广播.类 ...
- ℃江让您从精通到入门:QQ强制下线逻辑实现
下面由我来带领大家实现这个功能的基础.首先来看下演示图: 来看下组成吧: 第一步.新建一个ActivityCollector,用于遍历所有Activity后,更方便的给关闭某个Activity.代码如 ...
- Android通过广播实现强制下线功能
Android通过广播实现强制下线功能 我们首先定义一个activity集合类,在这个类里面主要添加三个方法,分别是 1.添加activity 2.删除activity 3.关闭所有activity ...
- Android开发(2) | 广播 Broadcast 的应用——强制下线功能
文章目录 功能简介 关闭所有活动 登陆界面 发送强制下线的广播 广播接收器 AndroidManifest.xml 运行结果 功能简介 强制下线功能只需要弹出一个对话框,让用户只能点击确定按钮,回到登 ...
最新文章
- Java程序员必备:序列化全方位解析
- Preparation for International Women's Day
- Scikit-learn 数据预处理之鲁棒缩放RobustScaler
- 最近有粉丝向我请教Java泛型,于是重温了一下,希望学弟面试顺利
- MySQL、MongoDB、列数据库的区别及应用场景
- mysql命令行如何建库_MySQL心得2--命令行方式建库和表
- 七年级计算机上教学计划,初一教学计划模板锦集5篇
- SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
- 如果要学习web前端,需要学习什么
- java扫描器创建,java – 如何创建条码扫描器(Android)?
- 如何使用电力电子仿真软件Plecs写程序脚本?(欢迎交流学习)
- 审批流程展示html,审批流程图怎么绘制?不懂可以看这里
- 2022年烷基化工艺模拟考试题及烷基化工艺模拟考试题库
- stm32f302实现斩波控制步进电机_电子产品装调与智能检测实训考核装置
- synchronized的偏斜锁,轻量级锁,重量级锁
- 说出我国的超级计算机的发展历程,中国超级计算机发展史
- linux crash,系统崩溃 - crash工具介绍
- pear php库,PEARX-不依赖 PEAR 的 PEAR 的 PHP 库
- mac MoviePy 合成视频没有声音(亲测)
- 高薪程序员必备—Redis高性能缓存数据库