我们在 App 中,通常会打开很多个任务栈,如果我们要退出 App,要点击返回键一步步的退出?有没有更简单的方法吗?答案是有的,我们创建一个 Activity 管理器,来统一管理 Activity。

新建一个 ActivityCollectior 类自作为活动管理器:

public class ActivityCollector {

/**

* 创建一个集合保存

*/

public static List activities = new ArrayList<>();

/**

* 添加 Activity

* @param activity

*/

public static void addActivity(Activity activity){

activities.add(activity);

}

/**

* 移除 Activity

* @param activity

*/

public static void removeActivity(Activity activity){

activities.remove(activity);

}

/**

* 移除所有 Activity

*

*/

public static void finishAll(){

for (Activity activity:activities){

if (!activity.isFinishing()){

activity.finish();

}

}

activities.clear();

}

}

创建一个基类,BaseActivity,让所有的 Activity 继承它。

public class BaseActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//添加创建的 Activity

ActivityCollector.addActivity(this);

}

@Override

protected void onDestroy() {

super.onDestroy();

//移除创建的 Activity

ActivityCollector.removeActivity(this);

}

}

随便一个 Activity 就可以退出 App,通过调用:

ActivityCollector.finishAll();

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second2);

ButterKnife.bind(this);

init();

}

private void init() {

tvValue.setText("这是第三个页面");

}

@OnClick({R.id.bt1, R.id.bt2})

public void onViewClicked(View view) {

switch (view.getId()) {

case R.id.bt1:

//退出App

ActivityCollector.finishAll();

break;

case R.id.bt2:

break;

default:

}

}

/**

* Activity页面跳转建议这样写

* @param secondActivity

*/

public static void launch(SecondActivity secondActivity) {

Intent intent = new Intent(secondActivity,ThirdActivity.class);

secondActivity.startActivity(intent);

}

}

launch()这样写的好处:

1.别的 Activity 可以一句话调用。

2.可以清晰的看到传递过来的参数,直接接受即可(重点)。

android活动管理器,Android 中管理所有的 Acyivity 活动相关推荐

  1. android fragment 管理器,Android Fragment 與 Fragment管理器

    Android Fragment 與 Fragment管理器 首先談談Fragement的需求 過去開發人員認為界面之間的跳轉只需要使用多個activity組成就行了: 例如下圖中,在Activity ...

  2. 运行android sdk管理器,Android SDK 安装配置

    Android SDK 可以通过 Android Command line tools(叫命令行工具或 SDK 工具)手动安装,也可以让 Android Studio 自动帮你下载安装,这里详细描述手 ...

  3. android 事件管理器,Android输入管理InputManager之读一次事件的流程

    流程图如下所示: 读一次事件的流程.png 读取线程InputReaderThread执行InputReader#loopOnce一次 void InputReader::loopOnce() { i ...

  4. android 铃声管理器,android RingtoneManager 铃声管理器

    获取默认铃声Uri/ Uri String Uri sound = RingtoneManager.getDefaultUri(type); (type = RingtoneManager.TYPE_ ...

  5. Android时间触发,设置闹钟管理器Android中的时间 - 立即触发闹钟

    这里我试图通过使用AlarmManger类设置闹钟.它与我工作正常,但当我设置闹钟时间后小时或分钟时间选择器,它会立即启动时,我保存该报警.闹钟.我需要警报熄灭,直到我设定时间. 下面是我的代码正在工 ...

  6. android Activity管理器

    android Activity管理器 应用场景 管理活动的Activity,可实现将一个activity添加到管理器.得到保存在管理器中的Activity对象.返回管理器的Activity是否为空. ...

  7. android sdk无法启动不了,无法启动Android SDK管理器

    我无法启动android sdk管理器,我已经正确检查了sdk,jdk路径但无法解决此问题.当我开始在eclipse CONSOL Android SDK中管理器显示这些行:无法启动Android S ...

  8. 移动开发技术(Android)——实验2 Android布局管理器的应用

    移动开发技术(Android)--实验2 Android布局管理器的应用 一.实验目的 二.实验内容 (一)创建一个Android项目,名称为"shiyan0201_专业_×××" ...

  9. 【android编程】 第三讲-Android布局管理器

    android编程 第三讲 Android布局管理器 文章目录 android编程 第三讲 Android布局管理器 约束布局管理器ConstraintLayout 线性布局管理器LinearLayo ...

最新文章

  1. ajax传值的url,JQuery ajax url传值与data传值的区别
  2. Codeforces 504 A (Round #285 div.1 A) Misha and Forest
  3. 编程字典keras.layers API方法
  4. 使用POI创建word表格-在表格单元格中创建子表格
  5. 让Linux系统崩溃最快速的方法
  6. VTK:PolyData之LinearExtrusion
  7. CompletableFuture计算完成时回调方法
  8. bzoj 1232: [Usaco2008Nov]安慰奶牛cheer【最小生成树】
  9. 谷歌用算力爆了一篇论文,解答有关无限宽度网络的一切
  10. 逻辑运算和作用域的问题
  11. 浅析Mysql的隔离级别及MVCC
  12. 2019年1月30日
  13. 如何正确使用RS485半双工芯片
  14. 第3-2课:用三个水桶等分 8 升水的问题
  15. Cache tier使用文档
  16. 中国标准时间转换成DateTime
  17. [转载]Malcolm的新书:Outliers
  18. VScode+keil插件-取代keil开发不要太爽了
  19. Vue-cli构建步骤
  20. 人物专访|大家好,我是橡树,研究车联网安全

热门文章

  1. 使用二进制包安装MariaDB
  2. WinCE6.0的极速启动
  3. .NET 4.0 任务(Task)
  4. 在WebApi中实现Cors访问
  5. Oracle 把游标说透
  6. .net 面试题系列文章一(附答案)
  7. bct对oracle影响,Oracle 优化篇+Rman增量备份优化之BCT(块变更追踪)
  8. 浅析MongoDB数据库的海量数据存储应用
  9. 编译安装openresty+mysql+php7
  10. Git的branch