如果退出当前运行的Activity,可以使用 this.finish() 或者 System.exit(0) 。
如果退出整个 程序,如下操作:
方式一:
Intent intent=new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(intent); System.exit(0);
方式二:
android.os.Process.killProcess (android.os.Process.myPid());
android 完全退出 程序
有几个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
所有创建的服务会停 止,还会发一个广播 Intent.ACTION_PACKAGE_RESTARTED 导致所有注册alarms被stopped, notifications 被 removed。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 程序
, activity
, 堆栈
, android intent
, home键退出
, intent
, Back键连续点击
, Back点击退出
, BACK键退出
, this与Activity.this
, activity堆栈
, activity堆栈管理
退出所有activity
android 退出程序、android退出整个程序、android 监听程序退出、android 退出程序代码、android 退出应用程序,以便于您获取更多的相关知识。