android中活动的启动模式
活動的啟動模式
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()); ? //打印出具體的某個活動名稱
??? }
???
}
?
?
隨時隨地地退出程序
新建一個類作為活動管理器
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第一行代碼》
?
轉載于:https://www.cnblogs.com/anumbrella/p/4540612.html
總結
以上是生活随笔為你收集整理的android中活动的启动模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于0xFFFFFFFF和alpha,温
- 下一篇: unbuntu运行shell脚本的问题