关于android应用退出的问题(转)

标签: android 应用 问题 | 发表时间:2014-10-06 15:48 | 作者:kingbinchow
出处:http://www.iteye.com
看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅。

方法一:System.exit(0) 和android.os.Process.killProcess(android.os.Process.myPid()),我想很多人都尝试过,当关 闭多个Activity的时候这两个方法根本不起作用,原因当然和Activity的堆栈管理有关。

方法二:restartPackage,这种方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有   的activity会被removed所有创建的服务会停止,还会发一个广播 Intent.ACTION_PACKAGE_RESTARTED 。众所周知这个方法已经过时,2.2就不起作用了。

    ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
    manager.restartPackage(getPackageName());
<uses-permission android:name=”android.permission.RESTART_PACKAGES”/>
方法三:这个方法是2.2以后取代restartPackage的方法。但是google给的只是一个空壳,这个方法依然不起作用。

activityManager.killBackgroundProcesses(packageName);
<uses-permission android:name=”android.permission.KILL_BACKGROUND_PROCESSES”/>
方法四:创建一个ActivityInstance单例模式来统一管理Activity的退出。这是一个很鸡肋的方法,因为它确实有用,但又这么写又有点浪费。

具体做法就是写一个ActivityInstance单例,在每一个activity启动的时候都调用它的ActivityInstance.addActivity(this);方法,当退出应用时,调用ActivityInstance.exit();方法。

public void exit(){
                               for(Activity at:activityList){
                 at.finish();
      }
    System.exit(0);
}
方法五:发送广播退出。在需要结束应用时,发送一个特定的广播,每个Activity收到广播后关闭。如果不闲麻烦可以这样做,个人来讲还没有方法四好。
方法六:递归退出,在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
方法七:退出的时候跳转回HOME,一种假的退出方法,但可以退出,该方法只是回到HOME页而将本身应用虚假退出。

    Intent startMain = new Intent(Intent.ACTION_MAIN);
                     startMain.addCategory(Intent.CATEGORY_HOME);
                     startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                     startActivity(startMain);
                     System.exit(0);
方法八: activityManager.forceStopPackage(PackageName);看到forceStop是不是感觉还挺熟悉的,我们系统设置里面关闭应用就是调用的这个方法。这个方法可以完全关闭应用程序而且只要一个包名。
不过这个方法是系统隐藏的,我们写应用的时候在ActivityManager里是找不到这个方法的。这就涉及到了调用系统隐藏API的方法。下面是通过反射机制来获取该方法。

ActivityManager sd = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
Method method= Class.forName(“android.app.ActivityManager”)
.getMethod(“forceStopPackage”, String.class);
补充:其实Android有自己的内存管理机制并不需要我们完全退出本身应用,当用户按退出键的时候用户回到HOME或其他相关界面即可。在没有特殊要求的时候虚假退出就可以。

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [android 应用 问题] 推荐:

关于android应用退出的问题(转)

- - 移动开发 - ITeye博客
看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅. 方法一:System.exit(0) 和android.os.Process.killProcess(android.os.Process.myPid()),我想很多人都尝试过,当关 闭多个Activity的时候这两个方法根本不起作用,原因当然和Activity的堆栈管理有关.

相亲相爱:Facebook 通过检查 Android 源代码修复应用问题

- - 极客公园-GeekPark
记者,愿意为创新的传播尽绵薄之力,并一直相信理想主义情怀才是原动力. [核心提示]由于 Android 系统的开放性,不止可以让更多人有机会改良系统,也能让开发者更好的解决应用的问题, 并使系统更加完善. 昨天的 极客早知道里,我们报道了 Facebook 移动为先的战略,其发展重心早已由桌面平台转移至移动平台.

谷歌下狠手整治Android应用窥探用户隐私问题

- - TechWeb 今日焦点 RSS阅读
新浪科技讯 北京时间2月9日上午消息,Google Play商店的规模很快就会大幅缩小,原因是该公司刚刚发信给世界各地的开发者,告知他们很快就会对违反谷歌用户数据政策的应用“限制可见”,甚至彻底删除. 为什么会有这么多开发者收到通知. 他们多数都存在一个共同问题:缺乏隐私政策. 根据谷歌自己的用户隐私政策,开发者必须提交有效的隐私政策,尤其是当这些应用需要处理敏感信息时.

GetEd2k (Android应用)

- 某牢 - eMule Fans 电骡爱好者
GetEd2k是一个Android应用程序,作者是anacletus. 此应用可以帮助你把网页中的电驴(eDonkey) 链接添加到你个人电脑的电驴客户端里,不过前提是你的客户端开启了用于远程控制的Web interface(Web服务器,网页接口,Web界面),当然,eMule(电骡), MLDonkey 和 aMule 都支持该功能,所以这三种主流电驴客户端的用户都可以使用GetEd2k.

Android 应用程序

- - CSDN博客推荐文章
Android 应用程序由四个模块构造而成:Activity、Intent 、Content Provider 、Service. 下面简单介绍一下如下模块的含义:. 1、Activity  "活动". 一个Activity就是单独的屏幕,每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口并对事件作出响应.

android应用框架

- - CSDN博客移动开发推荐文章
原文地址:http://developer.android.com/guide/components/fundamentals.html. android应用程序一旦装进设备,每个程序会在它自己安全的沙盒里运行. 1.android操作系统是一个多用户linux系统,每一个应用程序是一个用户. 2.默认情况下,系统会为每个app分配唯一的linux用户id(这个id只会被系统使用,并且只会被这个app知道),系统为每个app的所有文件都设置了权限,只有被分配了这个app用户ID的程序可以访问它.

[原]Android HttpURLConnection Accept-Encoding: gzip 版本问题

- - bob007abc的专栏
Android 官方文档对 HttpURLConnection 的 Performance 的描述有一段:. 参见: http://developer.android.com/reference/java/net/HttpURLConnection.html. 就是说 使用HttpURLConnection发请求时,默认的request hearder里会加上 Accept-Encoding: gzip.

关于 Android 安全的六个问题

- - 爱范儿 · Beats of Bits
由于 Android 的开放性,安全问题一直是人们关注的焦点. 每当安全公司爆出手机恶意软件,Android 用户都要提心吊胆一番. 为此,你或许已经安装了杀毒软件,安装软件也开始小心谨慎了. 不过,Android 安全问题真的非常严重吗. 近日, Androidcentral 网站邮件采访了 Android 首席安全工程师 Andrian Ludwig,提到了六个方面的问题.

Android WebView 常见的九个问题

- - 移动开发 - ITeye博客
关注微信号:javalearns   随时随地学Java. 目前Android WebView问题越来越多,接下来由爱内测(www.ineice.com)的技术工程师为我们介绍几种常见的Android WebView问题:. 1.为WebView自定义错误显示界面: /** * 显示自定义错误提示页面,用一个View覆盖在WebView */ protected void showErrorPage() { LinearLayout webParentView = (LinearLayout)mWebView.getParent();.

Android 应用界面设计

- - 互联网的那点事...
与 iOS 相比,Android 系统界面存在各种不协调,应用界面本身缺乏统一的规范. 虽然 Android 的开放性为应用的自主发挥带来了最大的可能性,但如果系统本身能够提供标准的范例,也未必是一件坏事,毕竟许多应用并不一定需要独创的界面. 从 Android 4.0 开始,系统界面在一致性上有了许多改善,那么 Android 应用的界面应该如何设计.