Activity生命週期之屏幕切換與應用的響應性

橫豎屏幕切換:

默認情況下,當"屏幕方向"或"鍵盤顯示隱藏"變化時都會銷燬當前Activity,創建新的Activity。如果不希望創建新的Activity實例,可以按如下配置Activity:

<activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation">

上面的android:configChanges屬性指定了要捕獲"屏幕方向"和"鍵盤顯示隱藏"變化,當捕獲到這些變化後會調用Activity的onConfigurationChanged()方法。

默認情況下(沒有配置android:configChanges屬性):

豎屏切橫屏,銷燬當前Activity後,會創建一個新的Activity實例。

橫屏切豎屏,銷燬當前Activity後,會創建一個新的Activity實例,新的Activity實例很快就會被銷燬,接着又會創建一個新的Activity實例。如果只希望創建一個實例·,可以配置:

android:configChanges="orientation"



應用的響應性:

在Android中,應用的響應性被活動管理器(Activity Manager)和窗口管理器(Window Manager)這兩個系統服務所監視。當用戶觸發了輸入事件(如鍵盤輸入,點擊按鈕等),如果應用5秒內沒有響應用戶的輸入事件,那麼Andorid會認爲該應用無響應,便彈出ANR(Application No Response)對話框。

正常情況下,Android程序會在一條子線程裏運行,如果Activity要處理一些比較耗時的工作,應該交予子線程完成·,否則會因爲主線程被阻塞,後面的用戶輸入事件因沒能在5秒內響應,導致應用出現ANR對話框。

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