为Android程序引入“关闭程序”机制
来源:互联网 发布:csr 蓝牙芯片 mac地址 编辑:程序博客网 时间:2024/06/05 10:59
首先声明一下:这里所说的“关闭程序”是像在windows任务管理器中关闭进程一样的效果。
现在在网上流传的解决方案主要有两类(三种):
第一类:调用系统API直接结束进程,即调用“killProcess”或者“System.exit”。首先我在实验时,这两种方法根本不能工作,这和finish()的效果一样,只是使当前正在运行的界面关闭。
第二类:这个解决方案已经比较接近我的解决方式了,没有特别的坏处,只是这种每次调用Intent都清掉其他的Activity的方式不太灵活,而且整个代码的设计也不太好(通过一个Activity结束其他的Activity,有点破坏封装)。
所以,现在开始介绍我的方案:
那么就来说说思路:Android的原生退出机制其实是当所有的Activity都finish以后,它的主程序就退出了(并不影响后台service)。而不知道什么原因,它没有提供直接退出的API。另外,在Android中,一个比较糟糕的设计,就是“返回键”的原生作用——从Activity的历史栈中将下一个Activity调出来。如果我们任由这样的返回键胡乱非为,就很可能打乱整个程序的业务逻辑——返回到过期页面。因此我的整个解决方案的主要思想是:提供对所有打开的Activity的管理机制
现在为大家呈上代码:
public class KillProgress extends Activity {
public static List<Activity> activity = new ArrayList<Activity>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//将activity添加到List中
activity.add(this);
}
@Override
protected void onDestroy()
{
super.onDestroy();
//从List中将activity去除
activity.remove(this);
}
public void killMyProcess()
{
for (Activity activitys : activity)
{
activitys .finish();
}
android.os.Process.killProcess(android.os.Process.myPid());
}
}
想要实现上面说的功能只需使你写的项目的所有Activity都继承这个类即可。
在《java编程思想》这本书中提到:如果一个类的继承层级超过2层,那么你的设计就很有可能有一定的问题,我们可以看看Activity的继承在此其继承层次超过了两层。
- 为Android程序引入“关闭程序”机制
- android + WebView 关闭提示程序
- 为程序加上“关闭钩子”(ShutdownHook)
- 为android添加程序。
- 为RCP程序增加关闭提示和关闭到系统托盘
- Android(安卓)内存分配机制详解 不需要关闭后台运行程序
- 关闭程序
- Android程序打开和关闭输入法,this.getCurrentFocus()有时为空,加try catch
- Android 程序添加Crash机制
- 快速转化J2ME程序为Android程序
- 在android程序中关闭软键盘
- Android原理 不需要关闭后台运行程序
- Android原理 不需要关闭后台运行程序
- Android原理 不需要关闭后台运行程序
- Android原理 不需要关闭后台运行程序
- Android程序打开和关闭输入法
- 关闭android程序里所有的activity
- Android编程之关闭当前程序
- HDU 1084(What Is Your Grade?)解题纠错
- net报“System.MissingMethodException: Method not found(找不到方法)”错误的解决方法
- SqlDbx 3.5中文版
- Android WebView
- 1893 丁磊养猪的故事
- 为Android程序引入“关闭程序”机制
- 为什么使用Node.JS
- 1894 Beckham’s Freekick
- 1895 应征入伍
- 1896 展厅
- 五、分类和协议
- JDBC 学习札记
- 空灵的思绪
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向