對於Activity的理解

今天電腦小白來談談自己對於activity的理解。

主要分爲以下四點

1 Activity是什麼

Activity是最基本也是最常見的android基本組件之一,負責與用戶交互,一個Activity通常就是一個屏幕

2 Activity的四種啓動模式

先簡單說明:下面提到的棧,指的是task棧。

通過在Manifest文件中設置Activity的android:launchmode屬性有以下四種啓動模式

a standard

standard是默認設置,想要以此模式啓動無需設置launchmode屬性,standard模式啓動一個activity將會生成一個新的activuty對象

b singletop

如果即將要啓動的activity的launchmode屬性爲singletop,而該activity已經啓動過了且正好位於棧頂,那麼android並不會爲程序生成一個新的activity,而是直接使用位於棧頂的那個activity,只有滿足上述2個條件纔會這樣,否則將會生成一個新的activity。

c singletask

singletask模式下,只會創建該activity的一個實例,在此模式下啓動activity,如果棧中已經有了該activity實例,那麼直接使用該activity實例。

d singleinstance

該模式下,將會新建一個task,且在該task下生成要啓動的activity實例(該task下只會生成這一個activity實例,且該activity不會被重複實例化)

3 Activity的生命週期

先上圖:

wKiom1NR12qyUPpdAAD_a5VIAD4060.jpg

簡單說明一下,當Activity正處於可見狀態時,這時它的狀態是onresume,當新的activity啓動,但之前的activity仍然處於可見狀態時,該activity處於onpause狀態,不可見則處於onstop狀態,當程序退出時,什麼時候是處於ondestroy呢?當該activity實例出棧的時候就會調用ondestroy。


4 Activity的狀態保存(兩種)

a 通過onSaveInstanceState()方法對信息進行保存,之後在onCreate(Bundle)或者OnRestoreInstanceState(Bundle)方法中恢復信息 值得一提的是,onSaveInstanceState()只有在該activity所在進程被系統殺死的時候纔會調用,比如說突然來了電話,系統內存不夠,因此殺掉了該進程,這時纔會調用該方法。


b 通過activity的生命週期中的onpause()和onresume()方法,在pause時保存信息,在resume時恢復信息。



一起學習,有錯誤請指出


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