`
297542579
  • 浏览: 3110 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

如何安全的退出一个已开启多个Activity的Android Application

阅读更多
在Android系统中,默认情况下,每开启一个Activity,都在会当前的任务栈中压入一个新的Activity,当我们在一个Application中开发了多个Activity的时候,如果想要退出应用,那么我们需要按多此返回键才能退出...这样就造成用户体验很不好的情况..

那么,怎样做才能让用户在想退出Application的时候,只按一个返回键就能退出呢??

其实有很多的解决方法,今天这里介绍一种相对安全,而且用户体验就比较好的方法,供自己以后查阅


首先,我们都知道,在Android应用中,全局只有一个Application,尽管我们平时很少使用它...但是,我们每次打开manifest文件的时候,在Activity标签外层,都被一个Application包裹住,这个其实就是我们的Application,全局只有一个,并且这个Application在Android中是作为程序的入口,相当于在Java中的main函数....

那么,问题来了...有这个Application,有什么用途呢?....


前面说到,这个Application在整个应用程序中是唯一的,全局只有一个,Application中有一个onCreate方法,这个方法会在当前应用所有对象被创建之前就会执行....


1.在Application中持有一个全局的集合(List),进而在其onCreate()方法中,实例化该集合对象
2.在Activity的onCreate方法中,通过getApplication()获取到当前应用的Application对象,通过对象,就可以在获取到里面的全局的集合,就可以将当前的Activity加入到集合中去,每一个Activity的onCreate方法中,都执行相同的操作
3.通过上述的操作,我们就可以收集到所有已经被打开的Activity

4.在每一个Activity的onBackPressed()方法中,获取该全局的集合(List) ,遍历集合,获取每一个Activity,并且调用其finish()方法即可


下面上代码

Application.java

public class MyApplication extends Application {

    public List<Activity> myApps;

    @Override
    public void onCreate() {

        myApps = new ArrayList<>();
        super.onCreate();
    }
}


FirstActivity.java
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
       

        MyApplication myApplication = (MyApplication) getApplication();
        myApplication.myApps.add(this);

    }


..... 有多少个Activity就执行多少此add方法

最后,在每一个Activity的onBackPressed()方法中,调用下面的方法

同时在Activity的onDestroy()方法中,从集合中移除当前的Activity


@Override
    public void onBackPressed() {
        super.onBackPressed();
        MyApplication myApplication = (MyApplication) getApplication();
        for (Activity acticity : myApplication.myApps) {

            acticity.finish();
        }
    }


@Override
    protected void onDestroy() {
        super.onDestroy();
        MyApplication myApplication = (MyApplication) getApplication();
        myApplication.myApps.remove(this);

    }
分享到:
评论

相关推荐

    安全退出已调用多个Activity的Application

    如何通过返回键,一次退出多个activity,直接退出应用程序。简单的思路就是:新建一个类,继承Application, 将所有创建的activivty 放到一个list中,在类中添加两个方法,一个addActivity(),用于添加activity到 list...

    Android代码-从注册流程分析如何安全退出多个Activity多种方式.rar

    在Android应用开发中,正确管理和安全退出多个Activity是至关重要的,因为这直接影响到用户体验和应用的内存管理。本文将从Android的生命周期出发,深入解析如何在不同场景下安全地结束Activity,以确保应用的稳定性...

    Android 多个activity完全退出实例代码

    1、新建一个 ExitApplication 类继承Application 2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的...

    分析如何安全退出多个Activity 多种方式

    在Android应用开发中,正确管理和安全退出多个Activity是至关重要的,因为这直接影响到用户体验和应用的性能。本文将深入探讨几种常见的方法来实现这一目标,同时确保应用在退出时资源得到妥善释放,避免内存泄漏等...

    Android高级应用源码-从注册流程 分析如何安全退出多个Activity 多种方式.zip

    在Android开发中,正确地管理和安全退出多个Activity是至关重要的,因为这直接影响到应用程序的性能和用户体验。这个压缩包中的"Android高级应用源码-从注册流程 分析如何安全退出多个Activity 多种方式.zip"提供了...

    Android 中 退出多个activity的经典方法

    在Android应用开发中,有时需要实现退出多个Activity的功能,特别是在用户点击退出按钮时,确保所有相关的Activity都被关闭,从而结束应用程序。以下将详细介绍两种在Android中退出多个Activity的经典方法。 ### ...

    list循环退出Activity,单例模式实现android的退出功能,代替广播,singleton

    应用程序可能会由多个Activity组成,而在某些情况下,可能需要一次性结束所有的Activity,例如退出应用程序。通常情况下,开发者可能会使用广播机制来实现这一功能,但使用单例模式来代替广播也可以达到同样的效果,...

    Android 退出多Activity的application的方式方法

    在Android应用开发中,有时需要提供一...综上所述,退出多Activity的Android应用有多种方法,每种方法都有其适用场景。开发者应根据应用的具体需求选择合适的方式,并注意保持良好的用户体验和遵循Android的设计原则。

    Android中知道界面是哪个activity,一次结束所有Activity退出程序

    当用户在应用中导航时,多个Activity可以按照栈(后进先出,LIFO)的方式堆叠起来,形成一个叫做任务(Task)的结构。在某些场景下,如应用退出或清理内存,开发者可能需要结束所有已打开的Activity,让应用回到启动...

    ANDROID 应用完全退出

    4. **使用TaskAffinity**:Android的任务栈(Task)管理多个Activity的堆叠。可以通过设置Activity的`android:taskAffinity`属性,使它们属于不同的任务栈,这样finishAllActivities()或finishTask()就能更有效地...

    android 如何完全退出程序

    在Android中,单纯调用`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`并不能确保应用程序中的所有Activity都被完全关闭,尤其是当应用程序中有多个Activity栈存在时。这种情况下...

    Android 关闭多个Activity的实现方法

    在Android应用开发中,有时需要关闭多个Activity,例如在退出应用时。以下是对四种常见的关闭多个Activity的方法的详细解释: 1. **使用Application类管理Activity**: 创建一个自定义的`Application`类,如`App`...

    关于android连续点击出现多个Activity界面的解决方法

    退出多个 Activity 的两个经典方法: 一种是把每个 Activity 用集合记住,然后逐一干掉;另一种思路是使用广播。方法一、用 list 保存 Activity 实例,然后逐一干掉实例,然后逐一干掉创建一个外部类继承 ...

    Android Activity 完全结束并退出程序的实例

    然而,在 Android 应用程序中,如何完全结束并退出程序是一个经常被问到的问题。本文将介绍如何使用全局变量标记来实现完全结束并退出 Android 程序的实例。 首先,为什么需要完全结束并退出 Android 程序?在 ...

    Android完美退出程序

    在Android开发中,应用程序通常由多个`Activity`组成,而这些`Activity`之间通过不同的生命周期进行管理与切换。为了确保用户在退出应用时能够得到良好的体验,实现一个完整的、优雅的退出机制显得尤为重要。本文将...

    Android程序的退出终于完美解决

    尽管上述方法能够有效退出所有Activity,但读者反馈指出了一个关键的问题:如果没有及时清理已finish的Activity的引用,会导致内存泄漏。这是因为即使Activity已经finish,其引用仍然保留在`activityList`中,占据着...

    Android-AppManager如何优雅的退出应用和处理崩溃异常自动重启

    3. **启动Service**: 在处理完异常后,启动一个后台Service,Service在后台执行重启逻辑,避免立即重启导致用户界面卡顿。 4. **权限检查**: 自动重启需要`RESTART_PACKAGES_PERMISSION`权限,确保在...

    Apk完全退出Apk

    在Android中,应用由多个Activity组成,每个Activity都有自己的生命周期,包括创建(onCreate())、启动(onStart())、可见(onResume())、暂停(onPause())、停止(onStop())和销毁(onDestroy())等状态。...

    Android退出整个应用的方法

    在Android系统中,一个应用通常由多个Activity构成,因此正确退出应用意味着要结束所有的Activity,使得下次用户点击应用图标时,会重新启动而不是恢复到之前的状态。本文将详细探讨如何实现这一功能。 首先,我们...

Global site tag (gtag.js) - Google Analytics