activity棧:
activity棧是乙個先進先出、包含所有正在執行的activity的佇列。乙個activity的狀態,對於開發者來說是無法控制的,是由系統決定的。那麼activity是按照什麼邏輯來運作的呢,這就要了解activity棧了,每個activity的狀態都是由它在activity棧中的位置決定。
當乙個新的activity啟動,當前這個activity就會移到這個棧的頂部。如果這個activity結束或者是使用者按了反回按鈕,那麼上乙個activity就會移動到頂部變為活動activity。
activity的載入模式:
在android的多個activity開發中,activity之間的跳轉可能需要多種方式,是生成乙個新的activity例項還是,直接跳轉到以前的activity例項?activity的載入模式就是解決這樣的問題的。來決定跳轉到哪乙個activity例項。
activity載入模式有四個載入模式:
standard:標準模式(預設的),乙個activity一呼叫startactivity(),就會產生乙個新的例項。
singletop:如果activity棧的頂部已經有了就不會產生新的例項,否則會產生乙個新的例項。
singletask:在新的任務中產生這個例項,以後呼叫都會使用這個(在同乙個任務中),不會產生新的任務。
singleinstance:跟singletask模式基本一樣,但是有個區別,那就是在這個模式下的activity例項所處的任務中,不能有其他的例項,只有這個activity的例項。
這四個模式的差異主要分為3點:
1,對intent做出響應的activity會在哪個任務中?對於standart和singletop模式,該activity是在產生intent(呼叫startactivity())的任務中,如果這個intent物件包含了
flag_activity_new_task標記,則會是另外乙個任務;對於singletask和singleinstance模式,activity總是位於任務的根本,所以只會在同乙個任務中,不會在其他任務。
2,activity是否存在多個例項?前兩個模式可以有多個例項,也可以在多個任務中,且每個任務有多個例項;後兩個模式下,只有乙個例項。
3,例項所在的任務中是否有其他的activity?前三個模式下,可以有其他的activity,最後乙個模式下,不能有,任務只能有乙個activity例項,就是該例項,如果有的話,這個activity就會根據
自己的載入模式載入到另乙個任務中。
正確退出activity 如何退出Activity
當然,也可以用killprocess 和system.exit 這樣的方法。但是,對於多activity的應用來說,在開啟多個activity後,如果想在最後開啟的activity直接退出,上邊的方法都是沒有用的,因為上邊的方法都是結束乙個activity而已。當然,網上也有人說可以。就好像有人問,...
activity的任務棧
當activity被建立出來的時候,系統就分給他乙個任務棧,task stack.用於存放activity.任務棧是用來描述activity當前的狀態.內部實現是乙個鍊錶.後進先出.複雜的任務棧.假設任務棧有browseractiviity.webkit.避免出現太多的activity.節約記憶體,...
Activity呼叫棧的分析
生活本來就不容易啊,而我們的不努力只會讓生活變得更加無賴。今天看了 android群英傳 的有關activity呼叫棧的相關知識,所以得來寫點東西記錄今天的收穫。androidmainifest啟動模式 standard activity預設的啟動模式,每次建立activity都會new出乙個新的例...