Android 自定義Application和Activity棧

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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章