日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Activity和Service的生命周期-----Activity学习笔记(一)

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Activity和Service的生命周期-----Activity学习笔记(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Activity的生命周期

情形一、一個單獨的Activity的正常的生命過程是這樣的:onCreate->onStart->onPause->onStop->onDestroy。例如:運行一個Activity,進行了一些簡單操作(不涉及頁面的跳轉等),然后按返回鍵結束。

情形二、有兩個Activity(a和b),一開始顯示a,然后由a啟動b,然后在由b回到a,這時候a的生命過程應該是怎么樣的呢(a被b完全遮蓋)?

a經歷的過程為onCreate->onStart->onResume->onPause->onStop->onRestart->onStart->onResume。這個過程說明了圖中,如果Activity完全被其他界面遮擋時,進入后臺,并沒有完全銷毀,而是停留在onStop狀態,當再次進入a時,onRestart->onStart->onResume,又重新恢復。

情形三、基本情形同二一樣,不過此時a被b部分遮蓋(比如給b添加個對話框主題 android:theme=”@android:style/Theme.Dialog”)

a經歷的過程是:onCreate->onStart->onResume->onPause->onResume

所以當Activity被部分遮擋時,Activity進入onPause,并沒有進入onStop,從Activity2返回后,執行了onResume

情形四、 打開程序,啟動a,點擊a,啟動AlertDialog,按返回鍵從AlertDialog返回。

a經歷的過程是:onCreate->onStart->onResume

當啟動和退出Dialog時,Activity的狀態始終未變,可見,Dialog實際上屬于Acitivity內部的界面,不會影響Acitivty的生命周期。

2、Service的生命周期

使用context.startService() 啟動Service

其生命周期為context.startService() ->onCreate()- >onStart()->Service running–>(如果調用context.stopService() )->onDestroy() ->Service shut down

如果Service還沒有運行,則android先調用onCreate()然后調用onStart();
如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重復調用多次。

調用stopService的時候直接onDestroy,
如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在后臺運行。
該Service的調用者再啟動起來后可以通過stopService關閉Service。

所以調用startService的生命周期為:onCreate –> onStart(可多次調用) –> onDestroy

對于bindService()啟動Service會經歷:
context.bindService()->onCreate()->onBind()->Service running–>onUnbind() -> onDestroy() ->Service stop

onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態或其他操作。
這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,
Srevice就會調用onUnbind->onDestroy相應退出。

所以調用bindService的生命周期為:onCreate –> onBind(只一次,不可多次綁定) –> onUnbind –> onDestory。
一但銷毀activity它就結束,如果按home把它放到后臺,那他就不退出。

PS:
在Service每一次的開啟關閉過程中,只有onStart可被多次調用(通過多次startService調用),
其他onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調用一次。

總結

以上是生活随笔為你收集整理的Activity和Service的生命周期-----Activity学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。