元素詳解

                                    <activity>元素屬性詳解

  1. 語法:<activity android:string = "...."><activity> (其中的string有多種,會在下文介紹)
  2. 被包含在:<application>
  3. 可以包含的元素:<intent-filter>,<meta-data>
  4. 描述:在manifest文件裏所有的activity必須被包含在<activity>元素裏(這裏要注意activity與<activity>是不同的,<activity>只是一個元素,而一個個activity是活動的具體描述),如果在manifest文件裏沒有定義任何的activity,則不會被系統可見,也就是說永遠也不會被運行
  5. 包含的屬性:(也就是上文的string
  • android:allowTeskReparenting=["true" | “false”]
這個屬性決定是否允許一個activity移動到另一個應用的Task裏, true表示可以,false表示不可以,如果這個性沒有被設置,則會默認的在<application>元素裏被設置爲false,並應用與activity;

正常情況下,一個Activity啓動後,就會在啓動它的Task裏耗盡他的生命;但是你可以使用這個屬性將一個Activity強制的加入到它所關聯的Task中,當然要在這個Activity的Task不再顯示的時候。


舉個例子(官方文檔翻譯):假設一個E-mail裏包含了一個web鏈接,點擊這個web鏈接就會啓動一個Activity,這個Activity本應是在瀏覽器Task裏,但是他現在作爲e-mailTask的一部分,如果他被重用到瀏覽器Task裏,那麼當瀏覽器運行到前臺時,這個Activity就會被顯示,當e-mailTask再一次回到前臺時,他就不可見了,這也達到了我們的要求,(大家可以試一下,體驗一下)


一個Activity關聯對象在taskAffinity屬性裏定義

  • android:alwaysRetainTaskState=["true" | "false"]
這個屬性用來設置Activity所在的Task是否會被系統一直保持下去,"true"表示會,"false"表示不一定會,默認爲"false",這個屬性只針對在Task裏的根Activity,其他的Activity將會被忽略。


正常情況下當用戶長時間的沒有使用已開啓的應用程序的Task時,(例如30分鐘),用戶再一次的點擊這個用程序的圖標,系統就會清理這個Task(除了root activity ),但是,但這個屬性爲"true"時,用戶將會重新回到上一層的操作,這個是很有用的,例如:一個像瀏覽器的應用程序會留下你上次離開時打開的標籤,而不會刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章