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完全退出应用程序的三种方式

当应用不再使用时,通常需要关闭应用,可以使用以下两种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。  建议使用这种方式 android.os.Process....
  • com360
  • com360
  • 2011年08月05日 16:46
  • 6788

Android:销毁所有的Activity退出应用程序几种方式

Android:销毁所有的Activity退出应用程序几种方式 author:DRC工作室  我们都知道,Activity是存放在栈中。在默认的情况下(standard)Activity在栈中是...
  • u013804382
  • u013804382
  • 2016年10月11日 16:03
  • 18564

android程序完全退出

第一种方法:首先获取当前进程的id,然后杀死该进程。 (建议使用)  android.os.Process.killProcess(android.os.Process.myPid()) 第...
  • Bitter_2014
  • Bitter_2014
  • 2014年12月03日 15:51
  • 401

Android 程序完全退出

在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序: Java代码   ActivityManager am = (...
  • csf993981061
  • csf993981061
  • 2012年12月25日 11:29
  • 232

Android技术之APP彻底退出

finish()方法 该方法可以结束当前 Activity,但是如果你的App有很多 Activity 的话,使用该方法显得有点捉襟见肘了。另外,还有一个方法finishActivity (int r...
  • wanghonghuai
  • wanghonghuai
  • 2017年02月09日 11:07
  • 2516

【Android】结束活动退出程序的方法

关闭所有活动有时我们可能会打开了很多个Activity,如果需要在某个页面可以关掉所有的Activity并退出程序。下面提供一个关闭所有Activity的方法, 就是用一个list集合来存储所有Act...
  • White_Idiot
  • White_Idiot
  • 2017年01月23日 18:36
  • 908

APP完全退出

app完全退出暂时知道只有这5中,其中通过广播的方式关闭APP比较推荐,关闭速度快,不影响用户体验!!!...
  • kun5069073
  • kun5069073
  • 2015年04月16日 11:22
  • 1772

Android 下Qt 多层窗口关闭时程序退出的问题 解决

我们项目使用了Qgis,并且是android版的。要说Android还是非常好用的,不过总感觉Qt在Android下还不是太成熟,首先是界面已经大不一样了,虽然改一改还基本是那么回事,但是太多的概念已...
  • v6543210
  • v6543210
  • 2013年12月23日 21:15
  • 1526

【Android】按Back键彻底关闭一个应用程序

1.近期,无意中浏览到一款
  • u010119170
  • u010119170
  • 2014年08月09日 03:11
  • 1556

android程序完全退出步骤

转自:http://www.cnblogs.com/jh5240/archive/2011/11/09/2243734.html
  • liananse
  • liananse
  • 2012年01月31日 16:52
  • 491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android程序完全退出
举报原因:
原因补充:

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