Android完全退出应用程序,完美解决方案
最近公司工作不是很忙,就抽空研究了下Android的引导页,但是在写完引导页并且进入到住页面之后,在退出时,采用"再按一次退出"的方式去实现的,用的方式是杀掉进程跟exit,即:android.os.Process.killProcess(android.os.Process.myPid())或者System.exit(0);
但是问题出现了,因为我在进入引导页Activity跟主界面Activity之前我是还有一个欢迎页Activity的(注:这个入口Activity的作用是判断此应用程序是否是首次加载,如果是首次加载就跳转到引导页中,否则,直接跳转到主界面Activity中),当我用以上两种方式的任意一种时,它并没有完全退出应用程序,而只是纯粹的销毁当前的Activity并且返回上一个Activity中,也就是入口欢迎页Activity,但这不是我想要的结果,所以就查了查关于完全退出应用程序的解决方案,最后找到了这个方案,完美解决该问题,希望可以借鉴给正在学习的Android菜鸟儿们。。。
Android退出应用程序回调用android.os.Process.killProcess(android.os.Process.myPid())或者System.exit(0),这只是针对第一个Activity时有效(即入口欢迎页Activity),如果我的应用程序中需要用到多个Activity,并且要求每个Activity都可以直接退出该应用程序时,这个方案也就无法去实现了。
网上查了下,现下最流行的方式是定义一个栈,写一个自定义的MyApplication类,利用单例模式去单独对Activity进行管理,在每个Activity的onCreate()方法中调用MyApplication.getInstance().addActivity(this)将当前的Activity添加到栈中统一管理,如果需要退出应用程序时再调用MyApplication.getInstance().exit()方法直接就完全退出了应用程序。
实现方案:统一管理的好处就是如果需要退出时,直接将add进栈的Activity进行同意finish就行。exit方法的实现原理就是将栈中所有的Activity实例循环然后finish的。
具体调用方式如上所述,以下只是MyApplication的具体实现,至于如何调用此处不便赘述。
代码如下:
public class MyApplication extends Application {
private List<Activity> activityList = new LinkedList<Activity>(); private static ExitApplication instance; private ExitApplication() { } // 单例模式中获取唯一的ExitApplication实例 public static ExitApplication getInstance() { if(instance == null) { instance = new ExitApplication(); } return instance; } // 添加Activity到容器中 public void AddActivity(Activity activity) { this.activityList.add(activity); } public void exit() { for(Activity activity:this.activityList) { activity.finish(); } System.exit(0); } }
Android完全退出应用程序,完美解决方案的更多相关文章
- android完全退出应用程序
android 完全退出应用程序android android 退出应用程序, 单例模式管理Activity引自:http://www.yoyong.com/archives/199android 退 ...
- android 安全退出应用程序的几种方法
android 安全退出应用程序的几种方法 正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程.a ...
- Android 完全退出应用程序
随着业务逻辑越来越复杂,退出应用程序也不像之前那个直接将Activity finish()掉就可以了,在网上看到很多完全退出App的文章,但是实践之后发现,并不像文章中描述的那样,不是方法过时了,就是 ...
- android 完全退出应用程序(重要)
android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个A ...
- 【转】android 完全退出应用程序
原文网址:http://www.yoyong.com/archives/199 android退出应用程序会调用android.os.Process.killProcess(android.os.Pr ...
- android 完全退出应用程序(经过严格验证)
今天解决了如何彻底结束Android应用程序的方法.网上有很多的参考方法,什么finish():android.os.Process.killProcess(android.os.Process.my ...
- 我的Android进阶之旅------>Android安全退出应用程序的几种方式
当应用不再使用时,通常需要关闭应用,可以使用以下几种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程. 建议使用这种方式 android.os.Process.kil ...
- Android 安全退出应用程序的方法总结
正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程. android.os.Process.kil ...
- 【转】 android获取设备唯一标识完美解决方案
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); ...
随机推荐
- Python 爬虫入门(requests)
相信最开始接触Python爬虫学习的同学最初大多使用的是urllib,urllib2.在那之后接触到了第三方库requests,requests完全能满足各种http功能,真的是好用爆了 :D 他们是 ...
- 【web安全】第二弹:XSS攻防中的复合编码问题
最近一直在研究XSS的攻防,特别是dom xss,问题慢慢的迁移到浏览器编码解码顺序上去. 今儿被人放鸽子,无奈在KFC看了两个小时的资料,突然有种豁然开朗的感觉. 参考资料先贴出来: 1. http ...
- wordpress mobile templates
http://themeforest.net/category/wordpress/mobile http://themeforest.net/item/monolith-wp-theme-for-b ...
- 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)-----初识WiX (转)
原文地址:http://blog.csdn.net/rryqsh/article/details/8274832 Visual Studio 打包安装七宗罪 开发.NET的人,肯定会使用Visual ...
- JavaScript闭包底层解析
1. 闭包是一个函数,这个函数有权访问另一个函数作用域中的变量,创建闭包最常见的方式,就是在函数内部创建函数.要想彻底搞清其中细节,必须从函数从创建到调用的时候都发生了什么入手 2. 函数第一次被调用 ...
- JS数据类型&&typeof&&其他
1. 5种基本数据类型: 1. String 2. Number 3. Boolean 4. Undefined 5. Null 2. 1种复杂数据类型:Object 3. 检测变量的数据类型:typ ...
- 几个不常见但非常出色的 .NET 开源库
NLog NLog 目前最为出色的 .NET 日志库,非常容易配置,且极具灵活性.最重要的是与 log4net 相比,NLog 的开发很活跃.顺带提一句,NLog 完全兼容 Mono. Mono.Ce ...
- Ubuntu下Qt编译报错“cannot find -lGL”的解决方案
转自cannot find -lGL Solved the problem by installing the "libglu1-mesa-dev" package. sudo a ...
- mysql查看'datadir'目录
mysql查看创建的数据库的数据,包含表等存放的目录,可以输入下面指令查看: show variables like 'datadir'
- cocos2d-x for js 继承的写法
cocos2d-x for js中集成了两套继承写法,一套是JR的(jquery的作者),一套是google. 目前来说,cocos2d-x for js demo使用JR的写法----未完待续... ...