??【Android精進之路-04】Android核心組件Activity,必須掌握的知識點(Activity是什么,生命周期

      網(wǎng)友投稿 815 2025-03-31

      您好,我是碼農(nóng)飛哥,感謝您閱讀本文,歡迎一鍵三連哦。

      本文會介紹Android中的核心組件Activity,重點介紹其生命周期

      Android系列文章都在Android專欄中,歡迎小伙伴關(guān)注。

      @[TOC]

      往期回顧

      ??【Android精進之路-01】定計劃,重行動來學Android吧??

      ??【Android精進之路-02】安裝android studio,認識Android SDK,一步步學習??

      ??【Android精進之路-03】創(chuàng)建第一個Android應(yīng)用程序竟然如此簡單??

      Activity組件是什么

      Activity組件是Android的用戶接口程序,它充當了Android應(yīng)用程序與用戶的交互入口。可以將它比喻成Android管理員:需要在屏幕顯示什么,處理用戶的不同操作都需要由Activity來協(xié)調(diào)管理。比如用戶需要打電話,拍照等操作都可以通過Activity提供的交互接口來實現(xiàn)。

      每個Activity都提供了用戶界面窗口(即屏幕)。一般情況下,該界面窗口會填滿整個屏幕,但是也可以比屏幕小或者浮在其他窗口之上。

      一個Android應(yīng)用程序通常包含多個屏幕,即意味著有多個Activity,但是只能有一個Activity作為應(yīng)用程序的主Activity。這個主Activity就相當于Java應(yīng)用程序中的main函數(shù),是Android應(yīng)用程序啟動后用戶看到的第一個屏幕。

      Android 應(yīng)用程序中的多個 Activity 可以直接相互調(diào)用以完成不同工作。 例如:

      一個電子郵件的應(yīng)用程序中主Activity提供了顯示電子郵件收件箱的屏幕,可以從主Activity啟動其他Activity用于執(zhí)行寫郵件和打開郵件這類任務(wù)。

      Activity的生命周期

      一個Activity從被創(chuàng)建—>啟動–>暫停–>銷毀是一個完整的生命周期。當新的Activity被啟動的時候,之前的Activity就會停止,但是不會立馬被銷毀,而是被壓入到"后退棧(Back Stack)“的棧頂。這里的后退棧遵循"后進先出"的原則,當新啟動的Activity被使用完畢,用戶單擊"Back” 按鈕時,當前的Activity會被銷毀,而原先的Activity會被從"后退棧"中彈出并被激活。

      Activity本質(zhì)上有三種狀態(tài):

      運行狀態(tài):Activity運行于屏幕的最上層并且獲得了用戶焦點

      暫停狀態(tài):Activity依然存在,但是沒有獲得用戶焦點。當前的Activity沒有被運行態(tài)的Activity遮擋住,用戶是可以看到其用戶界面的。

      停止狀態(tài):當前的Activity完全被處于運行態(tài)的Activity遮擋住,其用戶界面完全不被用戶看見。如果Activity離開可見階段,長時間失去焦點,就很可能會被系統(tǒng)銷毀以釋放資源。當然,即使該Activity被銷毀掉,用戶對該Activity所做的更改也會被保存在Bundle對象中,當用戶需要重新顯示該Activity時,Android系統(tǒng)會根據(jù)之前保存的狀態(tài)信息將該Activity重建。

      當Activity狀態(tài)發(fā)生改變時,都會通過狀態(tài)回調(diào)函數(shù)來通知Android系統(tǒng),開發(fā)人員可以通過這些回調(diào)函數(shù)對Activity進行進一步的控制。這些狀態(tài)回調(diào)函數(shù)由android.app.Activity 類提供。所有的Activity都必須要繼承android.app.Activity類或者它的子類。Activity的生命周期如圖1所示:

      圖1是Android官方開發(fā)文檔上提供的圖,這里我翻譯了一下,提供了一個漢化版的圖供有需要的同學查看。

      ??【Android精進之路-04】Android核心組件Activity,必須掌握的知識點(Activity是什么,生命周期是

      圖1和圖2 詳細的展示了Activity的生命周期。其主要有如下幾個流程:

      當Activity啟動時:會調(diào)用 onCreate(),onStart(),onResume() 三個方法,使Activity處于運行狀態(tài),即在屏幕顯示并獲得用戶焦點。

      當用戶切換到其他Activity時:該Activity會進入暫停狀態(tài),會調(diào)用onPause()方法,當用戶返回該Activity時會重新調(diào)用onResume()方法激活該Activity。

      當用戶關(guān)閉該應(yīng)用,切換到其他應(yīng)用程序是會調(diào)用onStop(),onDestory() 方法,銷毀該Activity。

      當該Activity長時間不顯示的話則調(diào)用 onStop()方法進入停止狀態(tài),用戶重新瀏覽該Activity時會調(diào)用onRestart(),onStart(),onResume() 三個方法,Activity重新進入運行狀態(tài)。

      下面就用代碼演示一下:這里創(chuàng)建了一個名為MainActivity的簡單Activity。在每個回調(diào)方法中都打印了XXX執(zhí)行了,通過演示讓大家對Activity的生命周期有一個更清晰的印象。

      public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate執(zhí)行了"); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart執(zhí)行了"); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume執(zhí)行了"); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause執(zhí)行了"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy執(zhí)行了"); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop執(zhí)行了"); } }

      項目啟動之后的演示效果如下:

      [video(video-ugN8SbXU-1632356560660)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=590741860)(image-https://ss.csdn.net/p?http://i2.hdslb.com/bfs/archive/71bf2f49d1a0b8ce0afa7da497e6401a4885020f.jpg)(title-Android的Activity生命周期的演示)]

      這里介紹一下每個回調(diào)函數(shù):

      總結(jié)

      本文詳細介紹了Activity的生命周期,需要明確的是Activity是Android應(yīng)用程序與用戶交互的入口,是用戶與Android應(yīng)用程序交互的中樞。它有完整的生命周期。

      Android

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Word2013中的表格轉(zhuǎn)換為文本的方法
      下一篇:怎么沒有查找命令(怎么查找命令提示符)
      相關(guān)文章
      亚洲制服丝袜一区二区三区| 亚洲一区二区三区高清| 国产精品亚洲午夜一区二区三区| 亚洲AV无码成人专区片在线观看| 日韩一卡2卡3卡4卡新区亚洲| 亚洲AV日韩精品一区二区三区| 色九月亚洲综合网| 亚洲高清国产拍精品熟女| 久久亚洲国产成人影院| 中文字幕无码亚洲欧洲日韩| 亚洲不卡影院午夜在线观看| 亚洲综合一区国产精品| 亚洲日韩一中文字暮| 亚洲精品无码人妻无码| 亚洲精品色播一区二区| 国产精品亚洲专区无码WEB| 亚洲欧美在线x视频| jjzz亚洲亚洲女人| 高清在线亚洲精品国产二区| 亚洲精品A在线观看| 奇米影视亚洲春色| 久久亚洲精品视频| 亚洲视频在线视频| 亚洲福利视频一区二区三区| 亚洲电影在线免费观看| 亚洲国产精品成人综合久久久 | 亚洲一欧洲中文字幕在线| 亚洲中字慕日产2020| 亚洲中文字幕无码mv| 国产精品无码亚洲精品2021| 亚洲国产午夜中文字幕精品黄网站| 亚洲日韩在线中文字幕第一页| 国产亚洲人成网站在线观看| 亚洲区小说区激情区图片区| 亚洲AV午夜福利精品一区二区| 精品日韩亚洲AV无码| 国产成人精品日本亚洲直接| 亚洲成a人片在线观看天堂无码| 免费观看亚洲人成网站| 亚洲美女在线国产| 好看的亚洲黄色经典|