Android程序完全退出

原创 2013年12月06日 11:50:55
有几个activity,有一需求是在一个activityA点击back键退出系统而不是跳到之前的activity
    首先想到的是清空activityA的堆栈,使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 如果该activityA不在
堆栈的最底端,则只能清除堆栈中该activityA上面的activity,最后会返回堆栈中该activityA下面的activity。
    然后想到的是截获back按键的事件,使用System.exit(0)和android.os.Process.killProcess(android.os.Process.myPid())来退
出程序,还是不行,当前的activityA是被干掉了,但是还是会被ActivityManager接管返回到前一个activity。而且如果之前activity需要一
些传过来的参数的话会导致程序连续抛异常。
    最后终于找到一个可行的方法:使用ActivityManager彻底退出程序
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);   
manager.restartPackage(getPackageName()); 
需要声明权限<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
这种方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有的activity会被removed
所有创建的服务会停止,还会发一个广播   
导致所有注册alarms 被stopped, notifications 被removed。
   这几天刷了2.2的rom发现restartPackage方法无效,网上搜了下答案:
 在Android 2.2中新增了一个API可以帮助我们杀死后台进程,不过Android123再次强调其调用的API Level最小为8,
killBackgroundProcesses是android.app.ActivityManager类的方法,使用时必须在androidmanifest.xml文件中加入
KILL_BACKGROUND_PROCESSES这个权限。虽然本类还提供了restartPackage (String packageName) 方法调用的API Level为
3,但是SDK中已经标记为deprecated,其实他们的原理都是一样的,只不过过去Google的命名方式确实不是很合理,restartPackage
的作用很难让我们联想到是结束进程。

 

 

   该方法的原型 public void killBackgroundProcesses (String packageName)  仅有一个参数为package Name,使用方法比较简

 

单。


   ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 


   am.killBackgroundProcesses("cn.com.android123.cwj");   // API Level至少为8才能使用

所以要用此方法最好加个判断如果是2.2之前的rom就用restartPackage之后的就用killBackgroundProcesse

怎样完全退出android程序

  • 2013年06月25日 16:56
  • 2KB
  • 下载

Android完全退出程序方法

  • 2012年08月24日 23:44
  • 58KB
  • 下载

Android完全退出应用程序

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/52434568 本文出自【吴孝城的CSDN博客】 在Android的Activity中,...
  • wu_wxc
  • wu_wxc
  • 2016年09月04日 20:38
  • 2712

android 如何完全退出程序

  • 2011年07月26日 17:01
  • 174KB
  • 下载

Android 完全退出当前应用程序的四种正确方法

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方...

在Android中使用 ”堆栈法“来完全退出应用程序

在Android开发中,有时候会遇到我们需要退出应用程序的时候,对于退出问题,众说纷云,有很多方法,至今本人没有发现较好的方法来解决这个问题:     1.  什么是”堆栈法“?     ...

Android应用开发完全退出程序的通用方法

转载于:http://www.du52.com/text.php?id=234 类型: 转载 分类: 移动开发 语言: Java 标签: android 退出应用 ...

Android应用开发完全退出程序的通用方法!!!

大家好,好久不见了,今天给大家分享的是Android应用开发完全退出程序的通用方法,以前我在网上收了几种方法,但都不能通用,比如:任务管理器方法(ActivityManager):首先要说明该方法运行...

Android应用开发完全退出程序的通用方法!!!

大家好,好久不见了,我们在开发一个android应用时,有可能有N个Activity,而在每个Activity里的菜单里有个"退出程序"菜单,这里就要完全退出程序了,所以今天给大家分享的是Androi...

android菜单项、弹出框、完全退出应用程序

本次了解到比较重要的就是应用程序的完全退出 问题:主窗口A调用了子窗口B,在窗口B中要退出应用程序,使用直接使用finish(),只会返回到窗口A中,折腾了好久,google后才解决,需要在窗口A调...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android程序完全退出
举报原因:
原因补充:

(最多只允许输入30个字)