方法一:Application
重写该App的Application 类,
package core.xidian.onekeyquit;
import android.app.Activity;
import android.app.Application;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 周亚胜 on 2016/3/11.
*/
public class MyApplication extends Application {
public List<Activity> list = new ArrayList<>();
public void exit(){
for(Activity a:list){
a.finish();
}
list.clear();
}
}
顺便值得一提的是Application:通常Application是系统自动创建的,启动Application时,系统会为该应用分配一个唯一的PID,所有的Application都在此进程上运行。因此要定义一个全局变量的话,这就是最合适的地方了。我们在一个Activity中改变了这些全局变量的值,则在同一应用中的其他Activity的值也会随之改变(这里我还思考了关于同事改变,是否要将其做成一个transaction,结论是没有必要,因为同时只有一个Activity调用了onResume方法)。Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
同时,在每个Activity中都获取全局变量list,每次创建的时候就调用:
MyApplication myApplication= (MyApplication) getApplication();
myApplication.list.add(this);
在每个Activity中对后退时间进行监听,重写onBackPressed方法:
public void onBackPressed() {
myApplication.exit();
super.onBackPressed();
}
大功告成!