欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程中Activity的四種啟動(dòng)模式

 更新時(shí)間:2016年04月12日 10:43:13   作者:肚皮會(huì)唱歌  
這篇文章主要介紹了Android編程中Activity的四種啟動(dòng)模式,較為詳細(xì)的分析了Activity四種啟動(dòng)模式的原理與功能,需要的朋友可以參考下

本文實(shí)例講述了Android編程中Activity的四種啟動(dòng)模式。分享給大家供大家參考,具體如下:

Activity啟動(dòng)方式有四種,分別是:

standard
singleTop
singleTask
singleInstance

可以根據(jù)實(shí)際的需求為Activity設(shè)置對(duì)應(yīng)的啟動(dòng)模式,從而可以避免創(chuàng)建大量重復(fù)的Activity等問(wèn)題。

設(shè)置Activity的啟動(dòng)模式,只需要在AndroidManifest.xml里對(duì)應(yīng)的<activity>標(biāo)簽設(shè)置android:launchMode屬性,例如:

<activity 
  android:name=".A1" 
  android:launchMode="standard" /> 

下面是這四種模式的作用:

standard

默認(rèn)模式,可以不用寫(xiě)配置。在這個(gè)模式下,都會(huì)默認(rèn)創(chuàng)建一個(gè)新的實(shí)例。因此,在這種模式下,可以有多個(gè)相同的實(shí)例,也允許多個(gè)相同Activity疊加。

例如:

若我有一個(gè)Activity名為A1, 上面有一個(gè)按鈕可跳轉(zhuǎn)到A1。那么如果我點(diǎn)擊按鈕,便會(huì)新啟一個(gè)Activity A1疊在剛才的A1之上,再點(diǎn)擊,又會(huì)再新啟一個(gè)在它之上……

點(diǎn)back鍵會(huì)依照棧順序依次退出。

singleTop

可以有多個(gè)實(shí)例,但是不允許多個(gè)相同Activity疊加。即,如果Activity在棧頂?shù)臅r(shí)候,啟動(dòng)相同的Activity,不會(huì)創(chuàng)建新的實(shí)例,而會(huì)調(diào)用其onNewIntent方法。

例如:

若我有兩個(gè)Activity名為B1,B2,兩個(gè)Activity內(nèi)容功能完全相同,都有兩個(gè)按鈕可以跳到B1或者B2,唯一不同的是B1為standard,B2為singleTop。
若我意圖打開(kāi)的順序?yàn)锽1->B2->B2,則實(shí)際打開(kāi)的順序?yàn)锽1->B2(后一次意圖打開(kāi)B2,實(shí)際只調(diào)用了前一個(gè)的onNewIntent方法)
若我意圖打開(kāi)的順序?yàn)锽1->B2->B1->B2,則實(shí)際打開(kāi)的順序與意圖的一致,為B1->B2->B1->B2。

singleTask

只有一個(gè)實(shí)例。在同一個(gè)應(yīng)用程序中啟動(dòng)他的時(shí)候,若Activity不存在,則會(huì)在當(dāng)前task創(chuàng)建一個(gè)新的實(shí)例,若存在,則會(huì)把task中在其之上的其它Activity destory掉并調(diào)用它的onNewIntent方法。

如果是在別的應(yīng)用程序中啟動(dòng)它,則會(huì)新建一個(gè)task,并在該task中啟動(dòng)這個(gè)Activity,singleTask允許別的Activity與其在一個(gè)task中共存,也就是說(shuō),如果我在這個(gè)singleTask的實(shí)例中再打開(kāi)新的Activity,這個(gè)新的Activity還是會(huì)在singleTask的實(shí)例的task中。

例如:

若我的應(yīng)用程序中有三個(gè)Activity,C1,C2,C3,三個(gè)Activity可互相啟動(dòng),其中C2為singleTask模式,那么,無(wú)論我在這個(gè)程序中如何點(diǎn)擊啟動(dòng),如:C1->C2->C3->C2->C3->C1-C2,C1,C3可能存在多個(gè)實(shí)例,但是C2只會(huì)存在一個(gè),并且這三個(gè)Activity都在同一個(gè)task里面。

但是C1->C2->C3->C2->C3->C1-C2,這樣的操作過(guò)程實(shí)際應(yīng)該是如下這樣的,因?yàn)閟ingleTask會(huì)把task中在其之上的其它Activity destory掉。

操作:C1->C2          C1->C2->C3          C1->C2->C3->C2            C1->C2->C3->C2->C3->C1             C1->C2->C3->C2->C3->C1-C2
實(shí)際:C1->C2          C1->C2->C3          C1->C2                              C1->C2->C3->C1                               C1->C2

若是別的應(yīng)用程序打開(kāi)C2,則會(huì)新啟一個(gè)task。

如別的應(yīng)用Other中有一個(gè)activity,taskId為200,從它打開(kāi)C2,則C2的taskIdI不會(huì)為200,例如C2的taskId為201,那么再?gòu)腃2打開(kāi)C1、C3,則C2、C3的taskId仍為201。

注意:如果此時(shí)你點(diǎn)擊home,然后再打開(kāi)Other,發(fā)現(xiàn)這時(shí)顯示的肯定會(huì)是Other應(yīng)用中的內(nèi)容,而不會(huì)是我們應(yīng)用中的C1 C2 C3中的其中一個(gè)。

singleInstance

只有一個(gè)實(shí)例,并且這個(gè)實(shí)例獨(dú)立運(yùn)行在一個(gè)task中,這個(gè)task只有這個(gè)實(shí)例,不允許有別的Activity存在。

例如:

程序有三個(gè)ActivityD1,D2,D3,三個(gè)Activity可互相啟動(dòng),其中D2為singleInstance模式。那么程序從D1開(kāi)始運(yùn)行,假設(shè)D1的taskId為200,那么從D1啟動(dòng)D2時(shí),D2會(huì)新啟動(dòng)一個(gè)task,即D2與D1不在一個(gè)task中運(yùn)行。假設(shè)D2的taskId為201,再?gòu)腄2啟動(dòng)D3時(shí),D3的taskId為200,也就是說(shuō)它被壓到了D1啟動(dòng)的任務(wù)棧中。

若是在別的應(yīng)用程序打開(kāi)D2,假設(shè)Other的taskId為200,打開(kāi)D2,D2會(huì)新建一個(gè)task運(yùn)行,假設(shè)它的taskId為201,那么如果這時(shí)再?gòu)腄2啟動(dòng)D1或者D3,則又會(huì)再創(chuàng)建一個(gè)task,因此,若操作步驟為other->D2->D1,這過(guò)程就涉及到了3個(gè)task了。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android通信方式總結(jié)》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android基本組件用法總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android studio有關(guān)側(cè)滑的實(shí)現(xiàn)代碼

    Android studio有關(guān)側(cè)滑的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android studio有關(guān)側(cè)滑的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Flutter路由之fluro的配置及跳轉(zhuǎn)

    Flutter路由之fluro的配置及跳轉(zhuǎn)

    本文主要介紹了Flutter路由之fluro的配置及跳轉(zhuǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解Flutter中l(wèi)istview的高級(jí)用法

    詳解Flutter中l(wèi)istview的高級(jí)用法

    一般我們使用Listview的方式是構(gòu)建要展示的item,然后將這些item傳入ListView的構(gòu)造函數(shù)即可,通常情況下這樣做是夠用了,但是不排除我們會(huì)有一些其他的特殊需求。今天我們會(huì)來(lái)講解一下ListView的一些高級(jí)用法,希望對(duì)大家有所幫助
    2023-01-01
  • 獲取Android設(shè)備電池電量狀態(tài)

    獲取Android設(shè)備電池電量狀態(tài)

    本文介紹了在Android系統(tǒng)中獲取設(shè)備電池電量狀態(tài)的方法,包括使用BatteryManager類(lèi)獲取電量百分比、電池狀態(tài)和健康狀況,以及通過(guò)注冊(cè)廣播接收器實(shí)時(shí)獲取電量狀態(tài)變化。了解這些方法可以幫助用戶(hù)更好地管理設(shè)備的使用,避免因電量不足而影響使用體驗(yàn)。
    2023-03-03
  • 詳解Android性能優(yōu)化之啟動(dòng)優(yōu)化

    詳解Android性能優(yōu)化之啟動(dòng)優(yōu)化

    一款應(yīng)用的第一印象很重要,第一印象往往決定了用戶(hù)的去留。打開(kāi)一款應(yīng)用,如果速度很快,很順暢,那么很容易讓人覺(jué)得這款應(yīng)用背后的技術(shù)實(shí)力很強(qiáng),用戶(hù)潛意識(shí)中會(huì)對(duì)這款應(yīng)用更加的信賴(lài)。本文將詳細(xì)介紹Android性能優(yōu)化之啟動(dòng)優(yōu)化。
    2021-06-06
  • Android中GridView插件的使用方法

    Android中GridView插件的使用方法

    今天小編就為大家分享一篇關(guān)于Android中GridView插件的使用方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android?利用ImageView屬性實(shí)現(xiàn)選中和未選中效果

    Android?利用ImageView屬性實(shí)現(xiàn)選中和未選中效果

    這篇文章主要介紹了Android巧用ImageView屬性實(shí)現(xiàn)選中和未選中效果,實(shí)現(xiàn)思路通常我們會(huì)選擇在布局里加個(gè)ImageView,然后通過(guò)代碼層面加個(gè)判斷去讓ImageView加載不同狀態(tài)的圖片,需要的朋友可以參考下
    2023-06-06
  • Android gradle打包并自動(dòng)上傳的方法

    Android gradle打包并自動(dòng)上傳的方法

    本篇文章主要介紹了Android gradle打包并自動(dòng)上傳的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Android仿百度外賣(mài)自定義下拉刷新效果

    Android仿百度外賣(mài)自定義下拉刷新效果

    大家在使用百度外賣(mài)的訂餐的時(shí)候,會(huì)看到有個(gè)下拉刷新功能非常不錯(cuò),今天小編就通過(guò)代碼給大家介紹android仿百度外賣(mài)自定義下拉刷新,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Android數(shù)據(jù)庫(kù)greenDAO配置與使用介紹

    Android數(shù)據(jù)庫(kù)greenDAO配置與使用介紹

    這篇文章主要介紹了Android集成GreenDao數(shù)據(jù)庫(kù),使用數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)候,一般都會(huì)使用一些第三方ORM框架,比如GreenDao,本文分幾步給大家介紹Android集成GreenDao數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下
    2023-03-03

最新評(píng)論