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

Android編程之四種Activity加載模式分析

 更新時(shí)間:2016年01月11日 11:52:22   作者:hshm20517  
這篇文章主要介紹了Android編程之四種Activity加載模式,簡要分析了Android編程中涉及的Activity的四種加載模式,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文分析講述了Android編程之四種Activity加載模式。分享給大家供大家參考,具體如下:

Activity狀態(tài)

一般認(rèn)為Activity有以下四種狀態(tài):

① 活動(dòng)的:當(dāng)一個(gè)Activity在棧頂,它是可視的、有焦點(diǎn)、可接受用戶輸入的。Android試圖盡最大可能保持它活動(dòng)狀態(tài),殺死其它Activity來確保當(dāng)前活動(dòng)Activity有足夠的資源可使用。當(dāng)另外一個(gè)Activity被激活,這個(gè)將會(huì)被暫停。

② 暫停:在很多情況下,你的Activity可視但是它沒有焦點(diǎn),換句話說它被暫停了。有可能原因是一個(gè)透明或者非全屏的Activity被激活。

當(dāng)被暫停,一個(gè)Activity仍會(huì)當(dāng)成活動(dòng)狀態(tài),只不過是不可以接受用戶輸入。在極特殊的情況下,Android將會(huì)殺死一個(gè)暫停的Activity來為活動(dòng)的Activity提供充足的資源。當(dāng)一個(gè)Activity變?yōu)橥耆[藏,它將會(huì)變成停止。

③ 停止:當(dāng)一個(gè)Activity不是可視的,它“停止”了。這個(gè)Activity將仍然在內(nèi)存中保存它所有的狀態(tài)和會(huì)員信息。盡管如此,當(dāng)其它地方需要內(nèi)存時(shí),它將是最有可能被釋放資源的。當(dāng)一個(gè)Activity停止后,一個(gè)很重要的步驟是要保存數(shù)據(jù)和當(dāng)前UI狀態(tài)。一旦一個(gè)Activity退出或關(guān)閉了,它將變?yōu)榇脿顟B(tài)。

④ 待用: 在一個(gè)Activity被殺死后和被裝在前,它是待用狀態(tài)的。待用Acitivity被移除Activity棧,并且需要在顯示和可用之前重新啟動(dòng)它。

activity的四種加載模式

在android的多activity開發(fā)中,activity之間的跳轉(zhuǎn)可能需要有多種方式,有時(shí)是普通的生成一個(gè)新實(shí)例,有時(shí)希望跳轉(zhuǎn)到原來某個(gè)activity實(shí)例,而不是生成大量的重復(fù)的activity。加載模式便是決定以哪種方式啟動(dòng)一個(gè)跳轉(zhuǎn)到原來某個(gè)Activity實(shí)例。

在android里,有4種activity的啟動(dòng)模式,分別為:

standard: 標(biāo)準(zhǔn)模式,一調(diào)用startActivity()方法就會(huì)產(chǎn)生一個(gè)新的實(shí)例。

singleTop: 如果已經(jīng)有一個(gè)實(shí)例位于Activity棧的頂部時(shí),就不產(chǎn)生新的實(shí)例,而只是調(diào)用Activity中的newInstance()方法。如果不位于棧頂,會(huì)產(chǎn)生一個(gè)新的實(shí)例。

singleTask: 會(huì)在一個(gè)新的task中產(chǎn)生這個(gè)實(shí)例,以后每次調(diào)用都會(huì)使用這個(gè),不會(huì)去產(chǎn)生新的實(shí)例了。

singleInstance: 這個(gè)跟singleTask基本上是一樣,只有一個(gè)區(qū)別:在這個(gè)模式下的Activity實(shí)例所處的task中,只能有這個(gè)activity實(shí)例,不能有其他的實(shí)例。

singleTask: singleTask模式和后面的singleInstance模式都是只創(chuàng)建一個(gè)實(shí)例的。在這種模式下,無論跳轉(zhuǎn)的對象是不是位于棧頂?shù)腶ctivity,程序都不會(huì)生成一個(gè)新的實(shí)例(當(dāng)然前提是棧里面已經(jīng)有這個(gè)實(shí)例)。我覺得這種模式相當(dāng)有用。。在以后的多activity開發(fā)中, 經(jīng)常會(huì)因?yàn)樘D(zhuǎn)的關(guān)系導(dǎo)致同個(gè)頁面生成多個(gè)實(shí)例,這個(gè)在用戶體驗(yàn)上始終有點(diǎn)不好,而如果你將對應(yīng)的activity聲明為 singleTask 模式,這種問題將不復(fù)存在。不過前陣子好像又看過有人說一般不要將除開始頁面的其他頁面設(shè)置為 singleTask 模式。。原因暫時(shí)不明,哪位知道的可以請教下。

singleInstance: 看網(wǎng)上的解釋好像都比較復(fù)雜。剛開始也沒怎么明白這種模式,只知道它用的也不多。后來仔細(xì)看了網(wǎng)上的解釋,稍微有些懂了。就按我的理解解釋下。設(shè)置為 singleInstance 模式的 activity 將獨(dú)占一個(gè)task(感覺task可以理解為進(jìn)程),獨(dú)占一個(gè)task的activity與其說是activity,倒不如說是一個(gè)應(yīng)用,這個(gè)應(yīng)用與其他activity是獨(dú)立的,它有自己的上下文activity。拿一個(gè)例子來說明吧:

現(xiàn)在有以下三個(gè)activity: Act1、Act2、Act3,其中Acti2 為 singleInstance 模式。它們之間的跳轉(zhuǎn)關(guān)系為: Act1 -- Act2 -- Act3 ,現(xiàn)在在Act3中按下返回鍵,由于Act2位于一個(gè)獨(dú)立的task中,它不屬于Act3的上下文activity,所以此時(shí)將直接返回到Act1。這就是singleInstance模式,不知道解釋清楚了沒。

這些啟動(dòng)模式可以在功能清單文件AndroidManifest.xml中進(jìn)行設(shè)置,中的launchMode屬性。

什么是Task

當(dāng)我們需要一個(gè)Activity可以啟動(dòng)另一個(gè)Activity,可能另外一個(gè)Activity是定義在不同應(yīng)用程序中的Activity。

簡單來說,一個(gè)Task就是用戶體驗(yàn)上的一個(gè)“應(yīng)用”。
它將相關(guān)的Activity組合在一起,以stack的方式管理(就是前面提到的Activity Stack),這就是Task。

在Android平臺上可以將task簡單的理解為幽多個(gè)Activity共同協(xié)作完成某項(xiàng)應(yīng)用,而不管Activity具體屬于哪個(gè)Application,

Task通過Application launcher、Home screen的快捷方式或者 由 “Recent Tasks”(長時(shí)間按住Home鍵)最近使用過的Task記錄中啟動(dòng)。

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

相關(guān)文章

  • 詳解android adb常見用法

    詳解android adb常見用法

    這篇文章主要介紹了詳解android adb常見用法,對android開發(fā)測試的同學(xué)參考下
    2021-04-04
  • Android Studio綁定下拉框數(shù)據(jù)詳解

    Android Studio綁定下拉框數(shù)據(jù)詳解

    這篇文章主要為大家詳細(xì)介紹了Android Studio綁定下拉框數(shù)據(jù),Android Studio綁定網(wǎng)絡(luò)JSON數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android EditText被軟鍵盤遮蓋的處理方法

    Android EditText被軟鍵盤遮蓋的處理方法

    android app新增了透明欄效果,結(jié)果發(fā)現(xiàn)鍵盤彈起后會(huì)遮蓋屏幕底部的EditText,沒有像想象中的調(diào)整窗口大小,并滾動(dòng)ScrollView,將EditText顯示在鍵盤上方。下面小編把解決方法記錄一下,特此分享到腳本之家平臺,感興趣的朋友一起看看吧
    2016-10-10
  • Android獲取窗體信息的Util方法

    Android獲取窗體信息的Util方法

    這篇文章主要介紹了Android獲取窗體信息的Util方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • Android原生視頻播放VideoView的使用

    Android原生視頻播放VideoView的使用

    這篇文章主要為大家詳細(xì)介紹了Android原生視頻播放VideoView的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Android 進(jìn)程間通信實(shí)現(xiàn)原理分析

    Android 進(jìn)程間通信實(shí)現(xiàn)原理分析

    只有你允許客戶端從不同的應(yīng)用程序?yàn)榱诉M(jìn)程間的通信而去訪問你的service,以及想在你的service處理多線程,下面為大家詳細(xì)介紹下
    2013-06-06
  • Android通過手勢實(shí)現(xiàn)答題器翻頁效果

    Android通過手勢實(shí)現(xiàn)答題器翻頁效果

    這篇文章主要為大家詳細(xì)介紹了Android通過手勢實(shí)現(xiàn)答題器翻頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法

    Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法

    這篇文章主要給大家介紹了關(guān)于在Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-05-05
  • Android列表對話框用法實(shí)例分析

    Android列表對話框用法實(shí)例分析

    這篇文章主要介紹了Android列表對話框用法,實(shí)例分析了Android實(shí)現(xiàn)列表對話框的布局、設(shè)置及功能等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Android中ImageCropper矩形、圓形 裁剪框的實(shí)現(xiàn)方法

    Android中ImageCropper矩形、圓形 裁剪框的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Android中ImageCropper矩形、圓形 裁剪框的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2018-07-07

最新評論