具体需要看具体的实际情况,这是曾经遇到的问题以及解决方案

实现强制下线(不同应用之间)功能----简易微信聊天示例

强制下线功能需要先关闭所有活动,然后在回到登录界面。

新建一个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实现强制下线(不同应用之间)功能————简易微信聊天示例相关推荐

  1. 阅读软件怎么添加书源_微信聊天怎么添加话题功能?微信聊天添加话题方法[多图]-软件资讯...

    微信大家很熟悉,在不断的研究过程中微信也推出了非常多的实用功能,最近微信又在测试一个新的功能,可以在聊天的过程中添加#号,然后就可以直接关联到有关的信息,行程一个超链接,这样大家就可以直接点击进入一个 ...

  2. 百度 android geocoding,百度地图经纬度批量查找功能XGeocoding使用手册(示例代码)

    <XGeocoding使用手册> 1.下载XGeocoding V2 http://www.gpsspg.com/xgeocoding/download/ 2.解压XGeocoding_v ...

  3. 微信小程序php签到功能,简易微信小程序签到功能

    一.效果图 (此图片来源于网络,如有侵权,请联系删除! ) 点击签到后 (此图片来源于网络,如有侵权,请联系删除! ) 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用 ...

  4. Android编写一个登录界面,利用数据库实现记住密码,注册账号,强制下线,以及类似QQ的下拉列表登录功能

    首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧! 1.建立一个所有活动的父类,继承自Appcompat ...

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

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

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

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

  7. ℃江让您从精通到入门:QQ强制下线逻辑实现

    下面由我来带领大家实现这个功能的基础.首先来看下演示图: 来看下组成吧: 第一步.新建一个ActivityCollector,用于遍历所有Activity后,更方便的给关闭某个Activity.代码如 ...

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

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

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

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

最新文章

  1. Java程序员必备:序列化全方位解析
  2. Preparation for International Women's Day
  3. Scikit-learn 数据预处理之鲁棒缩放RobustScaler
  4. 最近有粉丝向我请教Java泛型,于是重温了一下,希望学弟面试顺利
  5. MySQL、MongoDB、列数据库的区别及应用场景
  6. mysql命令行如何建库_MySQL心得2--命令行方式建库和表
  7. 七年级计算机上教学计划,初一教学计划模板锦集5篇
  8. SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
  9. 如果要学习web前端,需要学习什么
  10. java扫描器创建,java – 如何创建条码扫描器(Android)?
  11. 如何使用电力电子仿真软件Plecs写程序脚本?(欢迎交流学习)
  12. 审批流程展示html,审批流程图怎么绘制?不懂可以看这里
  13. 2022年烷基化工艺模拟考试题及烷基化工艺模拟考试题库
  14. stm32f302实现斩波控制步进电机_电子产品装调与智能检测实训考核装置
  15. synchronized的偏斜锁,轻量级锁,重量级锁
  16. 说出我国的超级计算机的发展历程,中国超级计算机发展史
  17. linux crash,系统崩溃 - crash工具介绍
  18. pear php库,PEARX-不依赖 PEAR 的 PEAR 的 PHP 库
  19. mac MoviePy 合成视频没有声音(亲测)
  20. 高薪程序员必备—Redis高性能缓存数据库

热门文章

  1. 都2021年了,年薪50W真的难吗?
  2. docker内搭建nacos服务
  3. SpringSecurity和SpringSocial实现QQ登录
  4. html5 中相对定位和绝对定位
  5. python4.0中文下载_pycharm4.0版本下载-pycharm4.0中文版v4.0.7 官方版 - 极光下载站
  6. javascript读取excel中的时间的格式问题
  7. 实验6:ACL的配置
  8. 小程序中使用Echarts完成地图标点
  9. 选择结构(英文大小写)
  10. 干货 | 几种常见的开关电源工作原理及电路图详解