Activity生命周期 onCreate onResume onStop onPause
Android應用開發提高系列(6)——Activity生命周期
onCreate 和 onResume 在程序啟動時候都會啟動,
所有有些需要在onCreate onResume中都要實現的功能,之需要放在onResume中就可以了。這樣還可以避免部分錯誤,比如在兩個事件中都彈出了提示框,這么就會提示兩次。前言
四大應用程序組件中Activity是最常用的,也是必須掌握的一個組件。這里分幾章梳理歸納一些實用的知識點與大家分享。
一、配圖及說明
Activity主要的三種狀態:
Running(運行):在屏幕前臺(位于當前任務堆棧的頂部)
Paused(暫停):失去焦點但仍然對用戶可見(覆蓋Activity可能是透明或未完全遮擋)
Stopped(停止):完全被另一個Activity覆蓋
二、事件方法鏈
2.1 進入Activity
onCreate ?-> onStart ?-> ?onResume
2.2 BACK鍵
onPause -> onStop -> onDestroy
2.3 HOME鍵Home鍵退出:onPause -> onStop Home鍵回來:onRestart -> ?onStart -> onResume ?2.4 休眠/恢復
休眠: onPause
恢復: onResume
2.5 旋轉屏幕未設置android:configChanges:
onPause ?-> ?onStop ?-> ?onDestory ?-> ?onCreate ?-> onStart ?-> ?onResume
設置了android:configChanges="orientation|keyboardHidden":
不會觸發生命周期方法,參見文章這里。
2.6 來電來電,顯示來電界面:
onPause ?-> ?onStop
關閉電話界面,重新回到當前Activity:
onRestart -> ?onStart -> onResume
2.7 其他Activity進入下一個Activity:
onPause ?-> ?onStop
從其他Activity返回至當前Acitivity:
onRestart -> ?onStart -> onResume
三、與Activity生命周期結合的應用場景
3.1 與廣播(Broadcast)結合
在onResume注冊廣播(registerLinstener),在onPause注銷廣播(unregisterLinstener)。 例如:
做"搖一搖"功能(傳感器)、監聽網絡變化,就可以在onResume中注冊監聽,在onPause里注銷掉,已節省資源提高效率。
3.2 與服務(Service)結合
在onStart綁定服務(bindService),在onStop中取消綁定(unbindService)。 例如:
需要通過Service定時更新UI上的數據,而Activity的可見周期在onStart與onStop之間,那么就可以再onStart時啟動服務,在onStop時停止服務。為了節約系統資源,除了提高用戶體驗以外,開發人員應盡可能的優化程序。
3.3 與Cursor結合
使用managedQuery讓Activity幫你管理Cursor的生命周期,不用自己去close。但也有一些問題,補充兩篇文章:這里1、 這里2。
3.4 釋放資源
可以在onDestory中釋放一些資源。比如可以在onDestory時調用MediaPlayer的release。
四、注意
4.1 所有Activity生命周期方法的實現都必須先調用其父類版本。
4.2 由于Activity經常會暫停和恢復之間切換,所以onResume和onPause這兩個方法應當是輕量級的。
4.3 在系統再某種緊急情況下需要回收內存,onStop、onDestory可能不會被調用,因此需要在onPause中把需要長期保存的數據保存起來。
轉載于:https://blog.51cto.com/laokaddk/1340614
總結
以上是生活随笔為你收集整理的Activity生命周期 onCreate onResume onStop onPause的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【超清视频】CCNA系列课程之二:IP地
- 下一篇: Shell 下面的几种运算方式