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方法就可以了。