Android2.2完全退出程序

本文深入探讨了Android开发中如何通过finish()、System.exit(0)、android.os.Process.killProcess()等方法实现退出程序的功能,并解释了这些方法在不同Android版本上的适用性。同时,文章阐述了系统内存调度机制对于应用程序退出的影响,强调了过度干预系统资源管理的不必要性。通过提供终极解决方案,文章旨在帮助开发者在合理利用系统资源的同时,确保应用的稳定性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android开发的时候,需要给某按钮或者某事件赋予完全退出程序的方法。

  Android中有一个很常用的方法是finish();

  finish()可以返回Activity堆栈中的上一个Activity,即pop(),如果当前Activity已是最底层的Activit则会退出程序。

  这就引出一个问题了:

  如果当Activity1 跳转到 Activity2 的时候,如果在Activity2中调用finish()其实只会回到Activity1而不是退出程序。这个时候调用finish显然就不行了。

  一般网上比较常见的说法是用:

  Java代码 收藏代码

  System.exit(0);

  或是

  Java代码 收藏代码

  android.os.Process.killProcess(android.os.Process.myPid())

  经过试验过后发现并无效果。

  其实以上方法在Android2.1中是可行的。

  2.2以后统统作废,几经折腾,终于觅得终极解决方案:

  Java代码 收藏代码

  Intent startMain = new Intent(Intent.ACTION_MAIN);

  startMain.addCategory(Intent.CATEGORY_HOME);

  startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  startActivity(startMain); System.exit(0);

  这个方法很猛,可以直接回到android主界面,也算是可以解决一时只需了。

  不过话说回来,这种退出的方式其实并不推荐。

  Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就是android标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是使用自动关进程的软件。(这里解决了大家非要关进程的误区!)

  到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值