1、Application的生命周期是从程序安装到程序卸载,所以可以在Application里建个Activity栈,用来专门维护Activity。
2、首先是先自定义个Application,这个Application是单例的,所以他的栈也只有一个。
/**
* Application基类.
*
*
*/
public class BaseApplication extends Application {
/**
* 类标识.
*/
public static final String TAG = TAGBuilder.build(BaseApplication.class);
/**
* Activity栈.
*/
private List<BaseActivity> mActivityList = null;
@Override
public void onCreate() {
super.onCreate();
initActivityList();
}
/**
* 初始化Activity栈.
*/
private void initActivityList() {
if (mActivityList == null) {
mActivityList = new ArrayList<BaseActivity>();
}
}
/**
* 压栈.
*
* @param activity
* .
*/
void push(BaseActivity activity) {
mActivityList.add(activity);
}
/**
* 关闭所有Activity.
*/
public void finishAll() {
for (BaseActivity activity : mActivityList) {
activity.finish();
}
}}
3、每个Activity都继承自自己定义的BaseActivity,这样就可以在BaseActivity的onCreate方法里做压栈操作了。
每个Activity启动时都会调BaseActivity里的oncreate方法。子类重写时记得加super。
/**
* Activity基类.
*
*/
public abstract class BaseActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BaseApplication app = (BaseApplication) getApplication();
app.push(this);
}
}
4、自定义的Application还要在AndroidManifest.xml里声明。
<application
android:name=".base.BaseApplication"
5、当想退出程序时用单例的Application调下finishAll方法就可以了。