在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, 将所有创建的activivty 放到一个list中,在类中添加两个方法,一个addActivity(),用于添加activity到 list...
1、新建一个 ExitApplication 类继承Application 2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的...
在开发过程中,我们常常需要一个退出功能,来退出该应用的所有Activity,本篇文章主要介绍了Android 退出多Activity的application的方式,有兴趣的可以了解一下。
Android面试题 1. 请描述下Activity的生命周期。...如何安全退出已调用多个Activity的Application? 5. 请介绍下Android中常用的五种布局。 6. 请介绍下Android的数据存储方式。(Edited by Sodino)
Android技术总结+面试题 经典问题之一 如何退出Activity?如何安全退出已调用多个Activity的Application? 后面的自己看去吧。。。。
如何安全退出已调用多个Activity的Application? 5. 请介绍下Android中常用的五种布局。 6. 请介绍下Android的数据存储方式。(Edited by Sodino) 7. 请介绍下ContentProvider是如何实现数据共享的。(Edited by ...
如何安全退出已调用多个 Activity 的 Application?. 10 二、 Service. 11 1、Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作?. .......................................
1.使用List集合方式 用list保存activity实例,然后逐一...import android.app.Application; import android.content.DialogInterface; import android.content.Intent; public class SysApplication extends Applicat
安全退出已经打开多个activity的application
如何安全退出已调用多个Activity的Application? 答:单个的Activity,调用finish、killProcess()、System.exit()方法退出 多个Activity 在2.1之前,可以使用ActivityManager的restartPackage方法。 它可以...
4、不受任何限制的开发商 5、无缝结合的Google应用 图 Android 软件体系结构图 Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件 (MiddleWare)和应用程序(Application)。...
Fragment全解析系列(一):那些年踩过的坑Fragment全解析系列(二):正确的使用姿势Demo演示:均为单Activity 多Fragment,第一个为简单流式demo,第二个为仿微信交互的demo(全页面支持滑动退出),第三个为仿知乎...
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 ...
如何安全退出已调用多个 Activity 的 Application?...................................................................12 9、 Activity 的四种启动模式..........................................................
如何通过返回键,一次退出多个activity,直接退出应用程序。简单的思路就是:新建一个类,继承Application, 将所有创建的activivty 放到一个list中,在类中添加两个方法,一个addActivity(),用于添加activity到 list...
|--TabHost一个界面显示多Activity |--TextView单行跑马灯效果 |--TextView虚拟获得焦点 |--uploadServlet |--uri之表示资源resource |--ViewPage的使用 |--view中的tag用法之存储对象 |--view常用属性 |--xml常用...