成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Activity啟動模式(launchMode)詳解

移動開發 Android
Activity的啟動模式有四種,standard、singleTop、singleTask、singleInstance.

Activity的啟動模式有四種,standard、singleTop、singleTask、singleInstance.

 

1.standard

standard是Activity默認的啟動模式,在不進行顯示指定的情況下,所有活動都會自動使用這種啟動模式。

每次啟動都一個新的Activity位于棧頂。

android:launchMode="standard",此時每次點擊按鈕都會創建新的Activity

現在,我們寫一個簡單的按鈕 ,實現跳轉Activity

  1. private Button button; 
  2.     @Override 
  3.     protected void onCreate(Bundle savedInstanceState) { 
  4.         super.onCreate(savedInstanceState); 
  5.         setContentView(R.layout.activity_main); 
  6.         Log.e("MainActivity",this.toString()); 
  7.         button = (Button)findViewById(R.id.button); 
  8.         button.setOnClickListener(new View.OnClickListener() { 
  9.             @Override 
  10.             public void onClick(View view) { 
  11.                 Intent intent = new Intent(MainActivity.this, MainActivity.class); 
  12.                 startActivity(intent); 
  13.             } 
  14.         }); 
  15.     }  

雖然跳轉的頁面相同,但是在Task中每點一次按鈕就會創建一個新的Activity

 

Activity創建日志 

 

啟動示例圖

2.singleTop

當Activity的啟動模式為singleTop時,當啟動的Activity已經處于Activity棧頂時,則直接使用。

android:launchMode="singleTop"

我們創建NextActivity,并且在MainActivity中添加button2

  1. private Button button1,button2; 
  2.  
  3.     @Override 
  4.     protected void onCreate(Bundle savedInstanceState) { 
  5.         super.onCreate(savedInstanceState); 
  6.         setContentView(R.layout.activity_main); 
  7.         Log.e("MainActivity", this.toString()); 
  8.         button1 = (Button) findViewById(R.id.button1); 
  9.         button2 = (Button) findViewById(R.id.button2); 
  10.         button1.setOnClickListener(this); 
  11.         button2.setOnClickListener(this); 
  12.  
  13.     } 
  14.  
  15.     @Override 
  16.     public void onClick(View view) { 
  17.         switch (view.getId()){ 
  18.             case R.id.button1: 
  19.                 Intent intent = new Intent(MainActivity.this, MainActivity.class); 
  20.                 startActivity(intent); 
  21.                 break; 
  22.             case R.id.button2: 
  23.                 Intent intent2 = new Intent(this, NextActivity.class); 
  24.                 startActivity(intent2); 
  25.                 break; 
  26.         } 
  27.     }  

此時在MainActivity中啟動MainActivity,則Activity棧中只會創建一次;但是先啟動NextActivity之后再啟動MainActivity,則會創建新的MainActivity,因為此時的Activity棧頂是NextActivity

 

MainActivity ->MainActivity ->MainActivity

 

MainActivity -> NextActivity -> MainActivity

 

啟動示例圖

3.singleTask

當活動的啟動模式為singleTask時,啟動該Activity會現在棧中檢查是否已存在,若存在則直接將該活動之上的Activity全部出棧。

android:launchMode="singleTask"

 

啟動示例圖

4.singleInstance

singleInstance模式下會有一個單獨的返回棧來管理活動。不管哪個應用程序來訪問該活動,都共用同一個棧,這樣就可以允許其他程序調用,實現共享該活動。

android:launchMode="singleInstance"

 

啟動示例圖

圖中啟動的過程是:Main -> New -> Next 這個過程很容易看懂

返回過程是:Next -> Main -> New

明顯看出順序不一樣,為什么會出現這種情況呢?

NextActivity和MainActivity處于同一個棧,當我們返回時,NextActivity出棧,此時棧A中還存在MainActivity,并且處于棧頂,所以會看到MainActivity.

當MainActivity執行返回時,棧A會清空,然后我們就看到了位于棧B的NewActivity。

之后NewActivity出棧,棧B也為空時,App退出。

Activity的啟動模式簡單介紹到這里, 希望對您有所幫助,有不足或者錯誤的地方請指正。

后面會每星期至少一篇跟新本系列,感興趣可以關注。

一起學習,一起進步。 

責任編輯:龐桂玉 來源: Android開發中文站
相關推薦

2014-05-27 15:36:01

AndroidActivity啟動模式

2016-03-24 14:02:05

ActivityAndroid啟動

2021-08-11 17:15:17

AndroidActivity場景

2023-12-09 08:58:30

AndroidActivity啟動模式

2021-06-29 08:54:23

設計模式代理模式遠程代理

2011-06-28 15:01:01

Qt PIMPL

2011-06-01 17:35:35

Android Activity

2021-07-07 10:31:19

對象池模式解釋器模式設計模式

2012-02-21 23:05:17

Windows啟動順序

2021-11-28 22:33:01

Go選項模式

2010-07-15 17:58:31

Perl模式

2009-08-18 11:03:31

Observer設計模

2010-06-09 13:52:55

OpenSUSE桌面

2024-12-16 08:10:00

Spring開發

2010-06-13 15:58:20

GRUB啟動命令

2010-01-21 09:08:53

.NET設計模式

2021-08-23 06:27:46

AndroidctivitysetContentV

2009-07-10 16:14:29

MVC設計模式Swing

2018-10-29 08:47:48

傳輸模式無線

2010-02-03 13:26:54

Linux SVN
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品免费国产视频 | 欧美日韩免费视频 | 亚洲色图在线观看 | 中文字幕成人 | 亚洲在线日韩 | 99国内精品久久久久久久 | 在线婷婷 | 视频在线一区二区 | 久久国产欧美日韩精品 | 久久亚洲精品国产精品紫薇 | 高清久久久| 欧美三区在线观看 | 龙珠z在线观看 | 精品国产欧美一区二区三区不卡 | 自拍偷拍亚洲欧美 | 一级一级一级毛片 | 精品国产亚洲一区二区三区大结局 | 中文字幕欧美日韩 | 99re6在线| 国产精品一区二区日韩 | www.国产一区| 久久久久精 | www.操.com | 国产精品18久久久久久白浆动漫 | 91精品久久久久久久久久入口 | 亚洲高清久久 | 99资源站 | 亚洲麻豆| 中文字幕在线不卡 | 欧美情趣视频 | 99热热| 欧美 日韩 国产 一区 | 免费黄色片在线观看 | 成人在线观看免费 | 天天色综| 久久精品国产久精国产 | 欧美成人免费电影 | 久久一区二区三区免费 | 日韩一区二区av | 中文字幕视频在线看5 | 久久性色 |