关于android应用退出的问题
来源:互联网 发布:stc89c52单片机资料 编辑:程序博客网 时间:2024/04/27 03:03
看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅。
方法一: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或其他相关界面即可。在没有特殊要求的时候虚假退出就可以。
- 关于android应用退出的问题
- 关于android应用退出的问题
- 关于android应用退出的问题
- 关于android程序完全退出的问题
- Android应用不完全退出问题
- 关于Android应用设计中多余的“退出”功能
- Android 应用按返回键异常退出的问题
- 关于Android程序退出后内存释放的问题
- 关于Android程序退出后内存释放的问题
- 关于Android点击物理返回键退出程序的问题
- Android 关于极光推送退出APP时清空通知的问题
- 关于线程退出的问题
- android 退出应用的方法
- Android退出应用的方式
- Android退出应用的方式
- 关于Android退出程序的问题(在主页面或任意页面退出App)
- android关于退出的学习
- 关于app退出的问题,完美退出方式
- maven安装和配置【windows系统】)
- 监听器(Listener)在开发中的应用(一)
- 自定义控件三部曲之动画篇(七)——ObjectAnimator基本使用
- 关于linux 内存分配
- 底部导航栏实现页面的切换(四):消息提示
- 关于android应用退出的问题
- asp.net+FusionCharts+jQuery(ajax)后台请求数据生成图表
- php 环境配置。
- 自定义控件三部曲之动画篇(八)——PropertyValuesHolder与Keyframe
- 权限系统无法登录,直接跳转到业务系统
- Centos下安装Qt4.8.6和交叉编译qt-4.8.6的configure
- Xftp连接失败,解决办法
- MySQL优化--where条件字段的顺序对效率的影响 (02)
- java 静态导入,一看就懂了