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方法就可以了。
本文介绍了如何在Android中通过自定义Application来创建并维护一个Activity栈,以此实现对Activity生命周期的有效管理。在Application实例中建立的Activity栈确保了在整个应用程序生命周期内的唯一性,同时每个Activity启动时会调用BaseActivity的onCreate方法,子类重写时需调用super.onCreate()。
1648

被折叠的 条评论
为什么被折叠?



