`
297542579
  • 浏览: 3024 次
  • 性别: 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完全退出实例代码

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

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

    在开发过程中,我们常常需要一个退出功能,来退出该应用的所有Activity,本篇文章主要介绍了Android 退出多Activity的application的方式,有兴趣的可以了解一下。

    史上最全的android面试题库.pdf

    Android面试题 1. 请描述下Activity的生命周期。...如何安全退出已调用多个Activity的Application? 5. 请介绍下Android中常用的五种布局。 6. 请介绍下Android的数据存储方式。(Edited by Sodino)

    Android技术总结+面试题

    Android技术总结+面试题 经典问题之一 如何退出Activity?如何安全退出已调用多个Activity的Application? 后面的自己看去吧。。。。

    java/android 开发面试题

    如何安全退出已调用多个Activity的Application? 5. 请介绍下Android中常用的五种布局。 6. 请介绍下Android的数据存储方式。(Edited by Sodino) 7. 请介绍下ContentProvider是如何实现数据共享的。(Edited by ...

    Android面试宝典完整版

    如何安全退出已调用多个 Activity 的 Application?. 10 二、 Service. 11 1、Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作?. .......................................

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

    1.使用List集合方式 用list保存activity实例,然后逐一...import android.app.Application; import android.content.DialogInterface; import android.content.Intent; public class SysApplication extends Applicat

    finishActivitys

    安全退出已经打开多个activity的application

    android 面试2

    如何安全退出已调用多个Activity的Application?  答:单个的Activity,调用finish、killProcess()、System.exit()方法退出  多个Activity  在2.1之前,可以使用ActivityManager的restartPackage方法。  它可以...

    Android课程设计---基于Android系统的音乐播放器设计与实现.doc

    4、不受任何限制的开发商 5、无缝结合的Google应用 图 Android 软件体系结构图 Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件 (MiddleWare)和应用程序(Application)。...

    Fragmentation-为"单Activity + 多Fragment","多模块Activity 多Fragment"架构而生,简化开发,轻松解决动画、嵌套、事务相关等问题。.zip

    Fragment全解析系列(一):那些年踩过的坑Fragment全解析系列(二):正确的使用姿势Demo演示:均为单Activity 多Fragment,第一个为简单流式demo,第二个为仿微信交互的demo(全页面支持滑动退出),第三个为仿知乎...

    深入理解Android:卷I--详细书签版

    8.2 一个Activity的显示 275 8.2.1 Activity的创建 275 8.2.2 Activity的UI绘制 294 8.2.3 关于Activity的总结 296 8.3 初识Surface 297 8.3.1 和Surface有关的流程总结 297 8.3.2 Surface之乾坤大挪移 298 ...

    Android 程序员面试题精编第四版

    如何安全退出已调用多个 Activity 的 Application?...................................................................12 9、 Activity 的四种启动模式..........................................................

    ExitApp源码

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

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--TabHost一个界面显示多Activity |--TextView单行跑马灯效果 |--TextView虚拟获得焦点 |--uploadServlet |--uri之表示资源resource |--ViewPage的使用 |--view中的tag用法之存储对象 |--view常用属性 |--xml常用...

Global site tag (gtag.js) - Google Analytics