//通过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系统通常不鼓励开发者...
以下是一个关于如何实现Android完全退出应用的详细知识讲解。 首先,我们需要理解Android应用的基本结构。在Android中,一个应用通常由多个Activity组成,每个Activity代表一个用户界面。当用户通过点击按钮或其他...
在Android开发中,完全退出应用程序并不像在桌面操作系统中简单地关闭窗口那样直观。由于Android的设计理念强调用户体验和后台进程的高效利用,因此系统通常不会允许应用自行彻底退出,而是将其保留在内存中以便快速...
在Android应用开发中,完全退出一个程序并非简单地关闭当前活动(Activity)。特别是当应用程序包含多个Activity时,单纯地从栈顶Activity退出并不能确保整个应用的完全关闭,因为其他Activity可能仍在后台运行。本...
在Android系统中,完全退出一个程序是指结束应用的所有活动并释放其占用的系统资源,以便用户可以快速重新启动或切换到其他应用。这通常涉及到理解Android应用生命周期、使用Activity管理和处理Intent等方面的知识。...
在Android应用开发中,完全退出程序意味着结束所有与应用程序相关的活动(Activity)并释放系统资源。用户通常期望点击“退出”按钮后,整个应用程序能够完全关闭,而不是仅仅停留在后台运行。下面我们将详细讨论...
在Android应用开发中,完全退出应用程序并不像在其他操作系统中那样简单,因为Android系统的设计理念是尽可能保持应用的后台状态,以便用户能快速恢复到之前的状态。然而,有些情况下开发者可能需要提供一个完全退出...
以下是对Android完全退出当前应用程序四种方法的详细解释: 1. **Dalvik VM的本地方法** 这种方法涉及调用Android系统的本地方法来直接结束进程。首先获取当前进程的PID(Process ID),然后使用`killProcess()`...
本文将探讨如何在Android应用中实现完全退出,以及解决引用Context未释放导致的OOM(Out of Memory)问题。 首先,理解Android应用的生命周期至关重要。在Android中,应用通常不会被完全关闭,而是进入后台状态,...
### Android如何实现应用程序的完全退出 在Android开发中,实现应用程序的完全退出是一个常见的需求,尤其是在需要确保资源被正确释放,避免内存泄漏的情况下。本文将详细介绍如何通过使用单例模式和自定义`...
要实现Android应用程序的完全退出,我们可以采用特定的方法。本文将详细介绍一种解决方案,利用自定义的ExitUtil类和对Activity生命周期的理解来实现。 首先,我们需要创建一个名为ExitUtil的工具类,它的主要作用...
在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...
在Android应用开发中,完全退出一个程序并非简单地调用某个单一函数就能完成。通常,开发者会尝试使用`finish()`、`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`等方法来关闭...
注意,频繁地完全退出应用可能会对用户体验造成影响,因为Android系统通常能够有效地管理后台应用的内存占用。只有在特定场景下,如隐私保护或资源节省,才需要考虑完全退出应用。同时,遵循Android的设计原则和最佳...
Android 完全退出的实例详解 首先,在基类BaseActivity里,注册RxBus监听: public class BaseActivity extends AppCompatActivity { Subscription mSubscription; @Override protected void onCreate(Bundle ...