- 浏览: 122827 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
kingbinchow:
android:tonghuaguanxin 写道请问,这个属 ...
修改EditText的光标颜色 -
tonghuaguanxin:
请问,这个属性在代码中如何设置?
修改EditText的光标颜色
关于android应用退出的问题(转)
- 博客分类:
- android
看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅。
方法一: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或其他相关界面即可。在没有特殊要求的时候虚假退出就可以。
方法一: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 studio debug 一直加载so文件
2017-06-24 16:15 527以前在debug时,一直很快就可以成功,但最近电脑卡,加上更新 ... -
心形vector drawable
2016-04-21 10:44 575<vector xmlns:android ... -
Gridview的第一个Item点击没反应,点击其他的item OK
2015-08-07 14:56 1611遇到一个前人挖下的大坑,各种没响应的呀,后来发现以下代码有问题 ... -
仿iOS 的AssistiveTouch 按键 Floating Action Button
2015-04-16 14:50 1265FloatButton fb = new FloatBu ... -
Android 常见错误处理
2015-04-03 16:03 9051.could not find "com.baid ... -
Android GirdView 最后一行显示不完整
2015-03-20 18:19 3454Android GridView 设置wrap_content ... -
import android eclipse project to android studio
2014-11-13 11:09 884Export from Eclipse 1.Update y ... -
Canvas.drawTextOnPath 2D绘图
2014-07-23 17:18 667绘制文字效果,如下图 protected void onD ... -
android SAX parse xml
2014-07-17 16:22 591<?xml version="1.0&qu ... -
自定义menu,用PopupWindow截获KeyEvent
2014-07-17 15:49 1208public boolean onKeyDown(int ke ... -
Android 自动结束本层activity,回退到上一层 的intent 设置
2014-06-27 13:08 1916Intent intent = new Intent(); ... -
Android Custom View , can not use custom tag in xml file
2014-06-27 13:04 577add this line: xmlns:custom=&qu ... -
onMeasure()--典型视图度量时间
2013-02-18 15:42 950@Override protected void onMe ... -
AsynTask
2013-02-07 16:25 675... -
修改EditText的光标颜色
2013-01-29 15:02 4142在使用EditText的XML 文件中加入一个属性: and ... -
PopupWindow 的BadTokenException
2012-11-05 15:10 1275进入Activity就弹出PopupWindow 来,结果编译 ... -
android sqlite3 数据类型
2012-08-20 09:54 7063sqlite3中的数据类型 大多数的数据库引擎(到现在据我 ... -
android 入门xml布局文件--转
2012-07-10 15:58 869LinearLayout和RelativeLayout共有属性 ... -
Syntax error, static imports are only available if source level is 1.5
2012-06-05 10:20 1554Question: 工程之前一直正常运行,今早上 突然报出 S ... -
android--JNI (转)
2012-05-29 12:14 935The JNI is designed to handle s ...
相关推荐
使用android:process和Process.killProcess和UncaughtExceptionHandler完成Android应用程序不异常退出
Android怎样才能完全退出程序? 本Android程序解决了完全退出,引用context未释放引起的oom等问题。
Android完全退出应用demo,代码里面写的有,可以自己看
解决android退出整个应用的例子
使用Application做android完全退出系统实例
AppManager 如何优雅的退出应用和处理崩溃异常自动重启
Unity3D中Android应用的退出脚本 Posted on 2013年03月07日 by U3d / Unity3D脚本/插件/被围观 265 次 Uni
Android中实现再按一次返回键退出应用程序,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/64234676
Android实例源码-应用启动应用退出&网络判断类安卓源代码(12例) 3G和wifi的切换监听 android 在线更新示例代码 android程序的自动更新 和 基于GPS定位的轨迹存储 app更新,实现service下载 ViewPager+Fragment侧滑...
Android应用开发多个activity完全退出程序方法,亲测可用
Android 返回键退出代码,第一次提示用户再按一次返回键退出,两秒钟内再按一次则退出程序,否则认为用户取消了退出操作!下下来就可以用,绝对好用哦~~~!!
2 设置入口activity的启动模式android:launchMode="singleTask",重写onNewIntent方法, 在退出activity时,设置intent.setAction("exit_app");然后跳转到栈底activity, 这样就可以清除栈底之外的所有activity,...
Android 应用崩溃自动启动 给用户给好的体验 本应用还可以扩展为类似京东崩溃时弹出信息反馈框 这需要你自己实现哦 另外欢迎关注我的新浪微博@MinganCai 有问题可以@我 我会尽快给你们回复的 雷锋
Android例子源码捕获应用全局异常避免强制退出并写出日志到sd卡
Android 实现了可以滑动左侧边缘退出Activity的功能
android再按一次返回键退出应用的源代码
Android中实现一键退出应用程序,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/62104900
Android应用源码之闪屏加退出提示应用.rar
NULL 博文链接:https://lewisliu.iteye.com/blog/1629954
android中实现按两次返回键退出Activity,不再是返回一次就退出应用,第一次点击提示“再按一次退出应用”