Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Activity相關

Activity相關

編輯:關於Android編程

Activity啟動模式

(1)standard:標准模式 每次啟動一個Activity都會重新創建新的實例,不管這個實例是否已經存在。在這種模式下,誰啟動了這個Activity,這個Activity就會運行在啟動它的那個Activity所在的棧中(前一個activity模式是singleInstance除外)。
*注意事項*
當我們用非Activity類型的Context(A)去啟動標准模式的Activity(B)時,需要為B指定FLAG_ACTIVITY_NEW_TASK標記為,這是因為A並沒有所謂的任務棧。這樣啟動的Activity是以singleTask模式啟動的。

(2)singleTop:棧頂復用模式。如果新Activity位於棧頂,那麼不會被重新創建,同時會回調onNewIntent方法。
(3)singleTask:棧內復用模式。Activity只要在棧中存在,就不會重新創建實例,並回調onNewIntent方法。此模式默認具有clearTop效果。
(4)singleInstance:單實例模式。這是一種加強的singleTask模式,具有singleTask的所有特性。只能單獨位於一個任務棧中。

TaskAffinity 這個參數標識了一個Activity所需要的任務棧的名字,默認為應用包名。TaskAffinity屬性主要singleTask啟動模式或者allowTaskReparenting屬性配對使用。其他情況下沒有意義。

指定啟動模式有兩種方式,1 在AndroidMenifest中直接指定2通過代碼設置(intent.addFlags())。這兩種方式區別是,第二種優先級更高一些,當兩種方式都存在時,以第二種方式為准;限定范圍不同:第一種無法直接為Activity設置FLAG_ACTIVITY_CLEAR_TOP標識,第二種方式無法為Activity指定singleInstance模式。

Activity的Flags

FLAG_ACTIVITY_CLEAR_TOP
具有此標記的activity,當它啟動時,在同一個任務棧中所有位於它上面的activity都要出棧,一般要和FLAG_ACTIVITY_NEW_TASK配合使用。如果要啟動的activity采用standard模式,那麼它連同它之上的activity都要出棧,系統會放入新的activity實例並放入棧頂。
FLAG_ACTIVITY_NEW_TASK
為Activity指定“singleTask”啟動模式
FLAG_ACTIVITY_NEW_TOP
為Activity指定“singleTop”啟動模式

旋轉屏幕時Activity不重新創建的方法

1.如果minSdkVersion和targetSdkVersion有一個大於13,需要如下配置:

android:configChanges="orientation|screenSize"

2.直接配置橫屏或者豎屏

android:screenOrientation="portrait"

Activity數據保存

Activity異常情況下被終止,系統會調用onSaveInstanceState保存當前activity的狀態,這個方法的調用是在onStop之前,可能在onPause之前,也可能在onPause之後。恢復數據是在onRestoreInstanceState方法,這個方法的調用是在onStart之後。view自身會保存數據狀態,但是要確保每個view的id是唯一的。

IntentFilter匹配規則

action:Intent中的action能夠和過濾規則中的任何一個action相同即可匹配成功。
category:Intent可以沒有category(會默認為Intent加上android.intent.category.DEFAULT),如果一旦有,每個category都要和過濾規則中的任何一個category相同。

讀書筆記《Android開發藝術探索》

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved