編輯:關於Android編程
為什麼android中需要Activity的啟動模式呢?個人感覺,默認情況下當android的activity被創建實例的時候,系統會將activity把該實例放入任務棧裡,新的實例會在舊的實例上面,這不難理解,但是,每一次啟動同一個activity的時候,系統也會新建一個實例,這很明顯不符合我們的需求,所以Google方面給android提供了四種activity的啟動方式,下面我就按照我的理解來簡單說明一下。
一、standard:標准模式,也就是我們平常開發中系統默認的一種啟動模式。
在standard模式下,每次啟動一個Activity都會重新創建一個實例,不管該實例是否已經存在。在正常的Activity生命周期中,每一次實例的創建,它的onCreate、onStart、onResume都會被調用。這也導致了所屬於該任務棧中很可能存在著多個同一個Activity,雖然只是實例不一樣,但有時候我們確實不需要這樣,所以出現了一下的三種啟動模式。
二、singleTop:棧頂復用模式。
在這種模式下,如果新的Activity已經位於該棧的棧頂,那麼該Activity不會被重新創建。而是直接復用已經存在的Activity。如下圖所示:
![A、B、C、D代表4個Activity](http://img.blog.csdn.net/20161121002739184)
其中在棧頂中已經存在著一個D,但是當新啟動同一個D的時候,由於D已經設置啟動模式為singleTop,所以在創建之前,會檢查棧頂中是否已經存在同義D,如果存在則會復用舊的而不會新建一個D的實例。所以最後的情況會保持之前的不變,也是ABCD這樣。
三、singleTask:棧內復用模式。
有點像單例模式,在創建新的Activity的時候,也會檢查棧內是否已經存在Activity,與singleTop不一樣的是,在於Top與Task二字的差異,也就是說,singleTop模式只會檢查棧頂,但是不在棧頂的Activity則不會檢查,所以singleTask就是解決這樣的一個尴尬的問題,它會檢查棧內的Activity,而不管是否在棧頂。如果存在就復用,否則新建。圖片就不貼了,應該比較容易理解。
四、singleInstance:單實例模式。
可以說是singleTask加強版,它也會檢查棧內的Activity是否存在,不同點的是,前面幾種模式都是在同一個棧而言的,而singleInstance則會新建一個棧來保存新建的Activity實例。也就是說該棧中只有它自己的一個實例。否則復用已經存在的Activity實例。
雖然上面簡單說明了四種啟動模式,但是這裡況需要特別的說明一下的是,Activity的啟動模式並不像上面說的那麼簡單,需要考慮具體情況,這裡就不詳細說明了,需要自己多敲代碼來體會,目前我還在摸索階段,希望哪天會有人告訴我一下。
本文實例講述了Android編程動態修改RelativeLayout寬高的方法。分享給大家供大家參考,具體如下:我們經常會動態修改RelativeLayout的寬高,這樣
第一次編譯時,設定android SDK:F:\RAD Studio XE6\PlatformSDKs\adt-bundle-windows-x86-20131030\s
1 activity的聲明周期 安卓程序的最重要三個狀態為Resumed/Paused/Stopped, 絕大多數時間程序都會在這3個狀態間切換. 安卓程
有了前面幾篇博文作為基礎(《Android之——AIDL小結》、《Android之——AIDL深入》、《Android之&