在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
FirstActivity.java
..... 有多少个Activity就执行多少此add方法
最后,在每一个Activity的onBackPressed()方法中,调用下面的方法
同时在Activity的onDestroy()方法中,从集合中移除当前的Activity
已有 0人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐
那么,怎样做才能让用户在想退出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); }
已有 0人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐