TShopping

 找回密碼
 註冊
搜索
查看: 1106|回復: 0
打印 上一主題 下一主題

[教學] 【Android】【Activity的狀態即狀態轉換】

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-4-23 19:55:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook

Activity生命週期中的各種狀態,即針對Activity跳轉、鎖屏、home鍵等操作對Activity狀態轉化的影響。

Activity在一個完整的生命週期中會有4中狀態(摘自《Android 4 高級編程(第3版)》):

1、活動狀態:Activity位於Activity棧的棧頂,它是可見的、具有焦點的前台Activity,這時它可以接受用戶輸入。
2、暫停(Pause)狀態:在某些情況下,Activity是可見的,但是沒有獲得焦點,此時它就是暫停狀態。當一個透明的或者非全屏的Activity位於該Activity之前時,就會達到這種狀態,此時該Activity雖然(部分)可見,但沒有獲得焦點,不能接受用戶的輸入事件。
3、停止(stop)狀態:當一個Activity不可見的時候,它就處於停止狀態。
4、非活動狀態:當一個Activity被終止之後,在被啟動之前它就處於非活動狀態,已經被Destroy掉。處於非活動狀態的Activity已經從Activity棧中移除了,因此,在它們可以被重新顯示和使用之前,需要被重新啟動。


以下結果是我在三星S4(Android 4.2.2)真機測試後的總結,測試過程

1、啟動Activity,進入活動狀態:系統會先調用onCreate()方法,然後調用onStart()方法,最後調用onResume()方法,Activity進入運行狀態(活動狀態)。


2、當前Activity被其他Activity覆蓋其上(但該Activity仍然可見),進入暫停狀態:系統會調用onPause()方法,暫停當前Activity的執行,Activity進入暫停狀態。


3、當前Activity由暫停狀態回到活動狀態:系統會調用onResume()方法,Activity恢復到活動狀態。

         例如back掉覆蓋在當前Activity上面的透明或非全屏的Activity後,當前的Activity會回到活動狀態。


4、當前Activity由活動狀態進入停止狀態:

(1)、當前Activity跳轉到新的Activity界面;

(2)、按Home鍵回到主屏;

(3)、按鎖屏鍵。

這3中情況中,當前Activity退居後台,而且均不可見,該狀態轉化過程中,系統會先調用onPause()方法,然後調用onStop()方法,當前Activity進入停止狀態。


5、Activity從停止狀態恢復到運行狀態:系統會先調用onRestart()方法,然後調用onStart()方法,最後調用onResume()方法,再次進入運行狀態。
該條分別針對第4條的3種情況:
(1)、其他的Activity回退到該Activity;
(2)、按完Home鍵後又從主屏點擊應用返回Activity;
(3)、鎖屏以後,又通過解鎖返回Activity

這3中情況中Activity狀態轉化一樣,都是從停止狀態恢復到運行狀態,Activity先調用onRestart()方法,然後調用onStart()方法,最後調用onResume()方法。


6、Activity進入非活動狀態,系統先調用onPause()方法,然後調用onStop()方法,最後調用onDestory()方法,結束當前Activity。此時的Activity已經從Activity棧中移除了,因此,在它們可以被重新顯示和使用之前,需要被重新啟動。有兩種情況會使Activity進入非活動狀態:

    (1)、用戶主動退出當前Activity:例如按Back鍵,或者清除內存進程(有時onDestrory()方法不一定會執行)。

(2)、當前Activity處於暫停(被覆蓋)狀態或者停止狀態(不可見),即第2步和第4步,系統內存不足,kill掉了當前的Activity。該情況是我們不可控的,處於暫停狀態的Activity只有在極端情況下才會被系統主動終止。


7、Activity進由非活動狀態進入活動狀態:

     當前Activity處於非活動狀態,而後用戶退回、或者主屏點擊圖標返回、或者解鎖屏返回到當前Activity:需要重新開始生命週期,再次調用onCreate()方法、onStart()方法、onResume()方法,進入運行狀態。



注意:以上是三星S4(Android 4.2.2)真機測試後的總結,模擬器或者其他Android版本中,Activity跳轉、鎖屏、home鍵等操作對Activity狀態轉化的影響沒有經過測試,不知是否會有所差異,有興趣的可以找個低版本的測試一下。



 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-24 12:47 , Processed in 0.056393 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表