標籤:
活動的啟動模式
1.standard
2.singleTop
3.singleTask
4.singleInstance
standard為預設的活動啟動模式(無論活動是否在棧頂,都會建立一個新的活動)
sing了Top(如何棧頂有了新的活動就不會建立新的活動,會直接使用已經存在的活動)
singleTask(可以解決重複建立棧頂活動的問題,建立新的活動之前會檢查是否活動已經存在,若存在就把該活動之前的活動全部清出棧,將該活動顯示在棧頂,否則就建立一個新的活動)
singleInstance(該活動主要用於實現單個活動被多個程式同時調用的情況,即實現共用活動的問題)
活動進階的技巧使用
確定某個具體的活動,建立一個BaseActivity去繼承Activity,,然後每個新的活動都去繼承BaseActivity這個類
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName()); //列印出具體的某個活動名稱
}
}
隨時隨地地退出程式
建立一個類作為Active Manager
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
//一個遍曆迴圈把所用的活動全部清除掉
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
修改BaseActivity該類
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this); //每次活動都添加到管理器當中去
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
最後在要調用的方面的使用ActivityCollector.finishAll()方法即可。。。
經驗總結:來自書籍《android第一行代碼》
android中活動的啟動模式