如何退出Activity?如何安全退出已调用多个Activity的Application?
对于单一Activity的应用来说,退出很简单,直接finish()即可。
当然,也可以用killProcess()和System.exit()这样的方法。
但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。
当然,网上也有人说可以。
就好像有人问,在应用里如何捕获Home键,有人就会说用keyCode比较KEYCODE_HOME即可,而事实上如果不修改framework,根本不可能做到这一点一样。
所以,最好还是自己亲自试一下。
那么,有没有办法直接退出整个应用呢?
在2.1之前,可以使用ActivityManager的restartPackage方法。
它可以直接结束整个应用。在使用时需要权限android.permission.RESTART_PACKAGES。
注意不要被它的名字迷惑。
可是,在2.2,这个方法失效了。
在2.2添加了一个新的方法,killBackgroundProcesses(),需要权限android.permission.KILL_BACKGROUND_PROCESSES。
可惜的是,它和2.2的restartPackage一样,根本起不到应有的效果。
另外还有一个方法,就是系统自带的应用程序管理里,强制结束程序的方法,forceStopPackage()。
它需要权限android.permission.FORCE_STOP_PACKAGES。
并且需要添加android:sharedUserId="android.uid.system"属性
同样可惜的是,该方法是非公开的,他只能运行在系统进程,第三方程序无法调用。
因为需要在Android.mk中添加LOCAL_CERTIFICATE := platform。
而Android.mk是用于在Android源码下编译程序用的。
从以上可以看出,在2.2,没有办法直接结束一个应用,而只能用自己的办法间接办到。
现提供几个方法,供参考:
1、抛异常强制退出:
该方法通过抛异常,使程序ForceClose。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。
但是这样做同样不完美。
你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。
但至少,我们的目的达到了,而且没有影响用户使用。
为了编程方便,最好定义一个Activity基类,处理这些共通问题。
分享到:
相关推荐
主要为大家详细介绍了Android利用Intent启动和关闭Activity的相关操作,感兴趣的小伙伴们可以参考一下
关闭,退出所有的Activity.应该对大家有用。
Android 滑动关闭Activity组件可以设置上下左右滑动关闭,一个通过手势滑动关闭Activity的库,你可以设置滑动关闭的方向,比可以设置上下左右滑动关闭 一个通过手势滑动关闭Activity的库,你可以设置滑动关闭的方向...
android 滑动关闭activity ,支持三种效果:左滑,右滑,及底部滑动关闭 sdk 需5.0以上,不然会报错。
Android滑动关闭Activity,详细说明,见博客:http://blog.csdn.net/meijian531161724
假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。 首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...
滑动界面关闭activity,通过开源控件SwipeBackLayout
我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,...而关闭后弹出对话框,就很别扭了
2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的activity中覆盖onKeyDown方法. 4、当你点击手机的返回...
android_的Activity和Service之间的通信
本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用。具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭。为了在Android退出时关闭所有的Activity,这里给出了以下...
四、关闭activity 2 五、管理Activity的生命周期 2 5.1 生命周期简介 2 5.2 保存activity状态 3 5.3 处理配置文件的改变 3 5.4 Activity之间的合作 3 Tasks and Back Stack 4 一、管理Task 4 1.1 定义launch模式 4 ...
Android 侧滑关闭Activity的实例 实现原因 其实侧滑关闭activity在网上也有大量的文章去介绍他,我也有去看,要么是代码实在太多看不下去,要么就是跑了项目没有反应的。唯一的方法还是自己随手鲁一个~,侧滑这个...
android 二维码扫描,扫描完毕后关闭activity
点击退出按钮时,关闭所有Activity,实现退出程序功能。 实现方法: 添加每一个Activity到一个Activity集合中,退出时遍历集合,将每一个Activity finish掉。
Android 关闭多个Activity的实现方法 总的来说有四种方法: 1、使用Application来进行关闭 public class App extends Application { private static List<Activity> lists = new ArrayList<>(); public ...
Android-SplashView, 为android的任何 Activity 注入 SplashView splashView倒计时关闭View,主动跳过Dissmiss视图本地没有缓存时,显示默认图片或者不显示 SplashView
Hauler是一个实现了用手势滑动关闭Activity的Android库
Activity之间相互切换动画,解决了back键时后退动画的问题