//通过context获取系统服务,得到ActivityManager
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//获取当前运行中的TaskInfo
//获取的是一个List集合,也就是说当前系统中的task有多个
//关于该方法的参数,我从源码看了下,是指返回集合的最大可能条目数,实际返回数可能
//小于这个数目,取决于用户启动了几个task
List<ActivityManager.RunningTaskInfo> tasks = manager.getRunningTasks(1);
ComponetName baseActivity = tasks.get(0).baskActivity;
Intent intent = new Intent();
intent.setComponent(baseActivity);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("exit", "1");
content.startActivity(intent);
在应用程序的每个Activity中的onNewIntent()函数中接收intent参数并判断退出
String exit = intent.getStringExtra("exit");
if(exit != null && exit.equals("1")){
finish();
}
这里主要利用Task找到处于栈底的Activity。再利用Intent.FLAG_ACTIVITY_CLEAR_TOP标志清空task栈中除栈底以外的activity.
注意加上权限:<uses-permission android:name=”android.permission.GET_TASKS”/>
如果应用程序中包含多个Task就去遍历依次退出吧。
还有个思路:利用startActivityForResult依次调用task栈中的baseActivity或topActivity。每次创建后结束掉它
资料:
startActivityForResult与startActivity的不同之处在于:
1, startActivity( )
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2, startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,页面会跳转到下一个Activity,
而当这个Activity被关闭以后(this.finish()),程序会自动跳转会第一个Activity,并调用前一个Activity的onActivityResult( )方法。
android中使用startActivityForResult回传数据(转):
http://www.cnblogs.com/leon19870907/articles/2010701.html
//task栈底的Activity
ComponentName baseActivity = task.baseActivity;
//task栈顶的Activity
ComponentName topActivity = task.topActivity;
注意:
多语言切换等情况时,当我们去调用处于栈底的等不可见的Activity时,系统会调用onCreate(),再调用onNewIntent()
利用广播的方法退出:当程序crash后,一些Activity会接收不到广播而无法退出
分享到:
相关推荐
使用Application做android完全退出系统实例
Android完全退出应用demo,代码里面写的有,可以自己看
主要介绍了Android完全退出应用程序的方法,实例分析了Android退出应用程序的相关方法与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
android退出程序,便于快速开发使用!
当程序有多个Activity时,采用广播机制完全退出程序
android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中...
点击退出按钮时,关闭所有Activity,实现退出程序功能。 实现方法: 添加每一个Activity到一个Activity集合中,退出时遍历集合,将每一个Activity finish掉。
本篇文章小编为大家介绍,Android 完全退出应用程序的解决方法。需要的朋友参考下
android 如何完全退出程序
//常规java、c#的标准退出法,返回值为0代表正常退出 2. 任务管理器方法 首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限 ActivityManager am = (ActivityManager)...
Android怎样才能完全退出程序? 本Android程序解决了完全退出,引用context未释放引起的oom等问题。
主要介绍了Android 完全退出的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这部分内容,需要的朋友可以参考下
在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用...
在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...
Android应用开发多个activity完全退出程序方法,亲测可用