为了确保对应用中 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 的创建和应用退出时的销毁的更多相关文章

  1. Android 编程下设置 Activity 切换动画

    为 Activity 设置切换动画 我们知道,我们可以在 AndroidManifest.xml 文件中,通过 android:theme 属性设置 Activity 的主题.主题中定义了关于 Act ...

  2. Android开发之Activity的创建跳转及传值

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...

  3. Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)

    问题 Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开应用,还会进入首启动页.就会造成一些应用需要重新登录,当前页数据丢失等问题 解决 去除启动页的 ...

  4. Android 编程下实现 Activity 的透明效果

    实现方式一(使用系统透明样式) 通过配置 Activity 的样式来实现,在 AndroidManifest.xml 找到要实现透明效果的 Activity,在 Activity 的配置中添加如下的代 ...

  5. Android 编程下 App Install Location

    从 API 8 开始(参考官方文档:App Install Location | Android Developers),你可以将你的应用安装在外部储存中(例如,安装到设备的 SD 卡上).这是一个可 ...

  6. Android 编程下的四大组件之服务(Service)

    服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始.Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类 ...

  7. Android 编程下 Canvas and Drawables

    Canvas and Drawables 安卓提供了一组绘制二维图形的 API(参考官方文档:Canvas and Drawables | Android Developers),这组 API 允许开 ...

  8. Android 编程下字库的使用

    在安卓操作系统下对于 TextView 字体的支持很有限,默认情况下 TextView 的 typeface 属性支持 "Sans","serif"," ...

  9. Android 编程下 Touch 事件的分发和消费机制

    Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...

随机推荐

  1. Linux命令 rpm

    rpm -q samba                          --查询程序是否安装rpm -qa | grep httpd  --[搜索指定rpm包是否安装]  --all搜索*http ...

  2. 自定义控件 闪烁效果的TextView

    使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android ...

  3. .NET基础拾遗(7)多线程开发基础3

    一.如何使用异步模式? 异步模式是在处理流类型时经常采用的一种方式,其应用的领域相当广阔,包括读写文件.网络传输.读写数据库,甚至可以采用异步模式来做任何计算工作.相对于手动编写线程代码,异步模式是一 ...

  4. iOS_SN_UITableView的优化

    1.提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法. 2.异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口. 3.滑动时按需加载,这个在大量 ...

  5. angularjs中ng-switch的用法

    <!DOCTYPE html> <html lang="zh-CN" ng-app="app" ng-controller="ctr ...

  6. canvas ---1

    Canvas1 (关键词:canvas)   canvas :就是html5中提供的一个标签,只是用来展示绘图的内容 canvas  标签的默认宽高:300*150 如果给canvas来设置高度和宽度 ...

  7. 网络流初步——增广路算法(EK)模板

    #include <iostream> #include <queue> #include<string.h> using namespace std; #defi ...

  8. 【vc】5_文本编程

    1.插入符(Caret): (1) 文本插入符 函数的原型声明:(CWnd类) void CreateSolidCaret ( int Nwidth, int nHeight ); ·nwidth:指 ...

  9. 2016年的个人计划-xiangjiejie

    过去一年,开发了angularjs的wap项目,appwap社区,忙忙碌碌不停的做各种活动. 职业目标 今年,要多看书,别总是被懒癌缠身. 多学习,过去半年很少看技术文章了吧,养成定期看文章的好习惯, ...

  10. C语言基础学习学习前的准备-1

    C语言概述 欢迎来到C的世界!C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言.它是一种可移植语言,通常一个C程序可以经过很少的改动甚至不经改动就可以在其它系统上运行:它强大 ...