打开的多个Activity如何一次关闭
2016-03-12 00:16
204 查看
方法一:Application
重写该App的Application 类,package core.xidian.onekeyquit; import android.app.Activity; import android.app.Application; import java.util.ArrayList; import java.util.List; /** * Created by 周亚胜 on 2016/3/11. */ public class MyApplication extends Application { public List<Activity> list = new ArrayList<>(); public void exit(){ for(Activity a:list){ a.finish(); } list.clear(); } }
顺便值得一提的是Application:通常Application是系统自动创建的,启动Application时,系统会为该应用分配一个唯一的PID,所有的Application都在此进程上运行。因此要定义一个全局变量的话,这就是最合适的地方了。我们在一个Activity中改变了这些全局变量的值,则在同一应用中的其他Activity的值也会随之改变(这里我还思考了关于同事改变,是否要将其做成一个transaction,结论是没有必要,因为同时只有一个Activity调用了onResume方法)。Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
同时,在每个Activity中都获取全局变量list,每次创建的时候就调用:
MyApplication myApplication= (MyApplication) getApplication(); myApplication.list.add(this);
在每个Activity中对后退时间进行监听,重写onBackPressed方法:
public void onBackPressed() { myApplication.exit(); super.onBackPressed(); }
大功告成!
最后,一定注意,Application重写之后要在AndroidManifest文件中定义!!!血的教训,调了2小时
相关文章推荐
- Activity退出的几种方式
- Android开发中在一个Activity中关闭另一个Activity
- 一个程序员用在写程序上的时间大概占他的工作时间的10-20%
- 常用的markdown语法
- linux中的signal函数
- [nodejs] nodejs开发个人博客(五)分配数据
- 内存管理
- 图之Dijkstra算法(邻接表)---最短路径
- linux等待队列wait_queue_head_t和wait_queue_t
- c++11 对象池的实现
- mac使用
- 二叉树存储 最小堆
- 基于HTML5和JSP实现的图片Ajax上传和预览
- hdu 1013 digital roots(数字根)
- 图之拓扑排序(邻接表存储)
- 数据库简单概念和心得体会01
- 重换电脑,收藏JDK
- 二叉排序树的建立、查找和删除
- Java编程思想学习(十一) 泛型
- 资源网址