av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Activity啟動模式(launchMode)詳解

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

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),樂業(yè)企業(yè)網(wǎng)站建設(shè),樂業(yè)品牌網(wǎng)站建設(shè),網(wǎng)站定制,樂業(yè)網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,樂業(yè)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1.standard

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

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

Android:launchMode="standard",此時每次點(diǎn)擊按鈕都會創(chuàng)建新的Activity

現(xiàn)在,我們寫一個簡單的按鈕 ,實(shí)現(xiàn)跳轉(zhuǎn)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.     }  

雖然跳轉(zhuǎn)的頁面相同,但是在Task中每點(diǎn)一次按鈕就會創(chuàng)建一個新的Activity

Activity創(chuàng)建日志 

啟動示例圖

2.singleTop

當(dāng)Activity的啟動模式為singleTop時,當(dāng)啟動的Activity已經(jīng)處于Activity棧頂時,則直接使用。

android:launchMode="singleTop"

我們創(chuàng)建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棧中只會創(chuàng)建一次;但是先啟動NextActivity之后再啟動MainActivity,則會創(chuàng)建新的MainActivity,因?yàn)榇藭r的Activity棧頂是NextActivity

MainActivity ->MainActivity ->MainActivity

MainActivity -> NextActivity -> MainActivity

啟動示例圖

3.singleTask

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

android:launchMode="singleTask"

啟動示例圖

4.singleInstance

singleInstance模式下會有一個單獨(dú)的返回棧來管理活動。不管哪個應(yīng)用程序來訪問該活動,都共用同一個棧,這樣就可以允許其他程序調(diào)用,實(shí)現(xiàn)共享該活動。

android:launchMode="singleInstance"

啟動示例圖

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

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

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

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

當(dāng)MainActivity執(zhí)行返回時,棧A會清空,然后我們就看到了位于棧B的NewActivity。

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

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

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

一起學(xué)習(xí),一起進(jìn)步。


文章名稱:Activity啟動模式(launchMode)詳解
當(dāng)前路徑:http://uogjgqi.cn/article/coedhos.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流