Android 编程下 Activity 的创建和应用退出时的销毁
为了确保对应用中 Activity 的创建和销毁状态进行控制,所以就需要一个全局的变量来记录和销毁这些 Activity。这里的大概思路是写一个类继承 Application,并使获取该 Application 的实体为单例模式,在新的 Activity 被创建时在对应 Activity 的 onCreate 方法中将自己存入 Application 的集合中,然后在应用退出时将 Application 存有的 Activity 逐个进行销毁即可完全退出应用。代码如下:

package cn.sunzn.app; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.app.Application; public class AgentApp extends Application {
private List<Activity> activities = new ArrayList<Activity>();
private static AgentApp instance; private AgentApp() { } /**
* 单例模式中获取唯一的 Application
*/
public static AgentApp getInstance() {
if (null == instance) {
instance = new AgentApp();
}
return instance;
} /**
* 存放 Activity 到 List 中
*/
public void addActivity(Activity activity) {
activities.add(activity);
} /**
* 遍历存放在 List 中的 Activity 并退出
*/
public void onTerminate() {
super.onTerminate();
for (Activity activity : activities) {
activity.finish();
activities.remove(activity);
}
android.os.Process.killProcess(android.os.Process.myPid());
}
}

然后在每个 Acitivity 的 onCreate 方法中添加如下代码:
AgentApp.getInstance().addActivity(this);
最后在你要退出应用的界面执行如下的代码:
AgentApp.getInstance().onTerminate();
通过将 Activity 纳入 Application 对所维护集合的管理,即可达到完美退出应用的效果。
Android 编程下 Activity 的创建和应用退出时的销毁的更多相关文章
- Android 编程下设置 Activity 切换动画
为 Activity 设置切换动画 我们知道,我们可以在 AndroidManifest.xml 文件中,通过 android:theme 属性设置 Activity 的主题.主题中定义了关于 Act ...
- Android开发之Activity的创建跳转及传值
在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...
- Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)
问题 Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开应用,还会进入首启动页.就会造成一些应用需要重新登录,当前页数据丢失等问题 解决 去除启动页的 ...
- Android 编程下实现 Activity 的透明效果
实现方式一(使用系统透明样式) 通过配置 Activity 的样式来实现,在 AndroidManifest.xml 找到要实现透明效果的 Activity,在 Activity 的配置中添加如下的代 ...
- Android 编程下 App Install Location
从 API 8 开始(参考官方文档:App Install Location | Android Developers),你可以将你的应用安装在外部储存中(例如,安装到设备的 SD 卡上).这是一个可 ...
- Android 编程下的四大组件之服务(Service)
服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始.Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类 ...
- Android 编程下 Canvas and Drawables
Canvas and Drawables 安卓提供了一组绘制二维图形的 API(参考官方文档:Canvas and Drawables | Android Developers),这组 API 允许开 ...
- Android 编程下字库的使用
在安卓操作系统下对于 TextView 字体的支持很有限,默认情况下 TextView 的 typeface 属性支持 "Sans","serif"," ...
- Android 编程下 Touch 事件的分发和消费机制
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...
随机推荐
- UITextField点击return后注销第一响应者
// 当点击了return按钮,就让text调用自己的endEditing方法 [textField addTarget:textField action:@selector(endEditing:) ...
- BitmapFactory 加载图片到内存
Bitmap占用内存分析 Android的虚拟机是基于寄存器的Dalvik,它的最大堆(单个进程可用内存)大小一般是16M,当然不同设备是不一样的,可以查看/system/build.prop文件,[ ...
- Python代码分析工具之dis模块
转自:http://hi.baidu.com/tinyweb/item/923d012e8146d00872863ec0 ,格式调整过. 代码分析不是一个新的话题,代码分析重要性的判断比较主观,不同 ...
- Java线程同步与死锁认识
讲下自己的认识,算小小的总结吧! synchroized 具有同步线程的功能,它的处理机制类似于给参数里面的对象赋一个标记值,来表明当前状态,当程序里面某个线程执行synchroized里面的代码段时 ...
- Visual Studio Code使用typings拓展自动补全功能
转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...
- java中IO递归写入
package cn.stat.p1.file; import java.io.BufferedWriter; import java.io.File; import java.io.FileWrit ...
- cordova-plugin-app-version插件使用
此插件用来获取开发软件的版本号! 首先安装此插件: 命令行中输入 cordova plugin add cordova-plugin-app-version 然后刷新项目,就会在在项目plugin ...
- phpcms9添加301跳转
在做301跳转时遇到了"错误 310 (net::ERR_TOO_MANY_REDIRECTS):重定向过多."的问题,小编在这里把处理方法简单给大家写出来希望可以帮助到大家,另外 ...
- web标准(复习)--3 二列和三列布局
今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...
- Flask学习记录之Flask-Migrate
一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...