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). ...
随机推荐
- ios9基础知识总结(foundation)笔记
类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...
- MySql中Blob二进制对象的处理
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 可以用于存储图片等信息 Demo1:存储图片 String sql="INSERT IN ...
- JSONP的原理
JSONP的原理 JSONP的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的. <script type="text/j ...
- CSS3控制元素排列
需求: 将改变为. 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Activiti工作流学习-----基于5.19.0版本(3)
前面关于eventType的属性值的配置简单的说了一下,activiti支持的值如下表所示:这是我摘抄的activiti官网的 Event 的名字 描述 Event的类名 ENGINE_CREATED ...
- IIC 概述之3
为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形: 如下图所示的写操作的时序图: 读时序的理解同理.对于时序不理解的朋友请参考“I2C总线之(二)---时序” 完整的程序如下: ...
- GO函数倒叙输出
package main import "fmt" func main(){ rec() } func rec(i int){ { return } rec(i+) fmt.Pri ...
- python 3.5 猜数字游戏
#!/usr/bin/env python #encoding: utf-8 number = 88 for i in range(1,6): num = int(input('gusee numbe ...
- iOS 两种方法实现左右滑动出现侧边菜单栏 slide view
现在很多的APP中都有slide view,左右滑动出现侧边菜单栏的功能,Weico这个应用就有. 网上有很多第三方的类库实现了这种效果,其实自己代码写的话也是很简单的,下面我将介绍两种方法实现s ...
- OC高级编程——深入block,如何捕获变量,如何存储在堆上
OC高级编程——深入block,如何捕获变量,如何存储在堆上 首先先看几道block相关的题目 这是一篇比较长的 博文 ,前部分是block的测试题目,中间是block的语法.特性,block讲 ...