Activity是Android四大組件之一。一個Activity負責管理一個界面。 創建一個Activity: New -> Activity -> 選擇要創建的Activity類型(一般我們選Empty/Basic Activity) AS會自動在AndroidManifest.xml文件中註冊 ...
Activity是Android四大組件之一。一個Activity負責管理一個界面。
創建一個Activity:
New -> Activity -> 選擇要創建的Activity類型(一般我們選Empty/Basic Activity)
AS會自動在AndroidManifest.xml文件中註冊新建的Activity,不用我們手動註冊。
Activity的生命周期分為5種狀態:
1、啟動狀態
啟動狀態很短,啟動後便會進入運行狀態。
2、運行狀態
Activity處於屏幕最前端,可見、有焦點,可與用戶交互。
Android系統會儘可能保持處於運行狀態的Activity的運行,如果記憶體不足,Android會優先銷毀棧底的Activity,來保證運行狀態的Activity的運行。
3、暫停狀態
Activity對用戶仍然可見,但它無法獲取焦點,不會響應用戶的操作。
例如:Activity上覆蓋了一個透明的或者非全屏的Activity時,被覆蓋的Activity就處於暫停狀態。
4、停止狀態
Activity完全不可見,但任然保留著當前狀態和成員信息。
如果系統記憶體不足,停止狀態的Activity很容易被銷毀。
5、銷毀狀態
Activity被清理出記憶體。
Activity生命周期對應的方法:
1、onCreate() 在創建Activity時調用,做一些初始化設置。此方法用得很多。
2、onStart() 在Activity即將可見時調用
3、onResume() 在Activity獲取焦點、開始可見時調用
4、onPause() 當Activity被其它Activity覆蓋或鎖屏時調用
5、onStop() 當Activity對用戶不可見時調用
6、onDestroy() 在Activity銷毀時調用
7、onStart() 在Activity從停止狀態再次啟動時調用
當Activity執行onPause()進入暫停狀態,重新回到前臺運行時會先調用onResume();
當Activity執行onStop()進入停止狀態不可見,重新回到前臺運行時會先調用onRestart();
停止狀態的Activity很容易被銷毀,記憶體不足時,暫停狀態的Activity也可能被銷毀,如果暫停、停止狀態的Activity已被銷毀,重新回到前臺運行會先調用onCreate()。
在進行橫豎屏切換時,會先銷毀Activity,再重建Activity。
如果不希望橫豎屏切換時銷毀重建Activity,可以在AndroidManifest.xml的該Activity中通過configChanges屬性設置:
1 <activity 2 android:name=".Activity2" 3 android:label="@string/title_activity_2" 4 android:theme="@style/AppTheme.NoActionBar" 5 android:configChanges="orientation|keyboardHidden|screenSize"> <!-- 橫豎屏切換時不銷毀重建此Activity--> 6 </activity>
如果希望某個界面一直處於橫屏/豎屏狀態,不隨手機的晃動而改變,可以在AndroidManifest.xml的該Activity中通過 screenOrientation 屬性設置:
1 <activity 2 android:name=".Activity2" 3 android:label="@string/title_activity_2" 4 android:theme="@style/AppTheme.NoActionBar" 5 android:screenOrientation="portrait"> <!-- 一直處於豎屏狀態--> 6 </activity>
豎屏是portrait,橫屏是landscape。