关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
来源:互联网 发布:touchwin编程软件下载 编辑:程序博客网 时间:2024/05/14 06:22
相信有过项目经验的同学都遇到过这样的问题,就是设计“退出”功能时可能会遇到有些界面不能关闭的问题。当然如果你的项目所有的界面都在打开另一个界面时被关闭就不存在这个问题了,但大多数情况下这样是很不合理的,因为每次要查看这个界面都需要重新加载数据。尤其对于需要走网络的数据显示,这不仅效率低而且成本高。
网上大概有以下几种方法解决这个问题:
(1) System.exit(0);
(2) Process.killProcess(Process.myPid());
(3) ActivityManager activityManager = (ActivityManager)this
.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.restartPackage("packagename");
但这些貌似不是万能的,有的说在2.2版本后就失效了,那我们怎么办呢?在起初的一个项目里我用了一个比较笨的方法,我用一个类来专门管理所有的Activity。这个类里有一个List,每打开一个Activity我就把这个Activity放到这个List中,当退出时再将List中所有的Activity一个一个的关闭。
在后来的项目中发现了一个更好地方法,就是通过广播来完成退出功能,具体实现过程是这样的:在每个Activity创建时(onCreate时)给Activity注册一个广播接收器,当退出时发送该广播即可。大概的代码如下:
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction("finish");
registerReceiver(mFinishReceiver, filter);
……
}
private BroadcastReceivermFinishReceiver =new BroadcastReceiver() {
@Override
publicvoid onReceive(Context context, Intent intent) {
if("finish".equals(intent.getAction())) {
Log.e("#########","I am " + getLocalClassName()
+ ",now finishing myself...");
finish();
}
}
};
相信聪明的大家会把上面的代码写在一个基类里面,因为如果你的项目中Activity很多的话,写起来很麻烦,而且也不符合代码规范。
在退出时执行以下代码即可关闭所有界面完全退出程序:
getApplicationContext().sendBroadcast(new Intent("finish"));
- 关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
- 通过广播使Android程序完全退出
- Android完全退出程序,退出所有Activity
- 关于android程序完全退出的问题
- Android退出程序的时候把所有界面一起关闭
- 关于Android完全退出程序
- android完全退出程序 (所有版本通用)
- android 完全退出程序
- android 完全退出程序
- android完全退出程序
- android完全退出程序
- android完全退出程序
- android程序完全退出
- Android程序完全退出
- android 完全退出程序
- Android完全退出程序
- Android完全退出程序
- android 完全退出程序
- 人人网昨晚爆发XSRF安全漏洞
- 用poi处理excel文件异常:java.io.IOException: Invalid header signature; read 2338042707334752323
- C# 方面专家
- 使用SqlDataReader来操作数据库
- 黑马程序员_一些常用的类
- 关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
- SqlCommandBuilder在用SqlDataReader更新数据源时的作用
- HDU 1728
- Android之Adapter用法总结
- oracle的utl_file应用讨论实例
- TBXML库的用法
- 常用正则表达式
- Linux常用命令使用
- Android之ContentProvider总结