你了解Android中的Activity吗?
文章目錄
- 一、何為Activity
- 二、Activity的生命周期
- 三、Activity/ActionBarActivity/AppCompatActivity的區別:
一、何為Activity
??Android應用中通常由一個或者多個基本組件組成,我們平時看到的Android應用中最常用的組件就是Activity。Activity、BroadcastReceiver、ContentProvider和Service合稱Android的四大組件。Activity是Android的四大組件中最直觀的一個,可以狹義地理解為Activity是與用戶交互的界面,可以處理與用戶交互的事件。簡單說就是看到的界面。常見的 Activity 類型有 ListActivity,FragmentActivitiy,TabAcitivty 等。當然開發中可根據自己的功能設計自己的公共基類: BaseActivity。
在我們創建完一個Android工程后會有以下MainActivity視圖:
??可以看到,默認實現的onCreate()方法非常簡單,就是調用了父類的onCreate()方法。
Activity主要負責于和用戶交互,而談及與用戶交互則不得不說Android中的View組件了。View組件是所有UI控件、容器控件的基類,可以說View組件就是Android應用中用戶實實在在看到的部分。但View組件需要放到容器組件中,或者使用Activity將它顯示出來。如果我們需要通過某個Activity把指定的View顯示出來,調用Activity的setContentView()方法即可。
setContentView()方法可接受一個View對象作為參數,例如:
??這兩行代碼創建了一個LinearLayout對象(它是 ViewGroup的子類,ViewGroup又是View的子類),接著調用Activity的setContentView(layout)把這個布局管理器顯示出來。
??我們經常使用setContentView()方法接受一個布局管理器資源的ID作為參數,例如:
??在初始代碼中我們可以看到這一行代碼:
??這一行代碼主要是說明當前activity引用的是activity_main布局文件,在Android項目中添加的任何資源都會在R文件中生成一個相應的資源id,因此我們的activity_main.xml布局文件的id現在應該是已經添加到R文件中了。在代碼中引用布局文件的方法你也看到了,只需要調用R.layout.activity_main就可以得到activity_main.xml布局的id,然后將這個值傳入setContentView()方法即可。
??注意:這里我們使用的R是我們工程包下面的R文件,AndroidSDK還會自動提供一個android包下的R文件,注意兩者是有區別的,別引用錯了。
二、Activity的生命周期
??官方文檔中對Activity的生命周期有個比較經典圖,如下圖一所示:
??相信不少人已經看過這個流程圖,在此就不多做贅述,我簡單的說說這幾個過程:
1.啟動Activity:系統會先調用onCreate方法,然后調用onStart方法,最后調用onResume,Activity進入運行狀態。
2.當前Activity被其他Activity覆蓋其上或被鎖屏:系統會調用onPause方法,暫停當前Activity的執行。
3.當前Activity由被覆蓋狀態回到前臺或解鎖屏:系統會調用onResume方法,再次進入運行狀態。
4.當前Activity轉到新的Activity界面或按Home鍵回到主屏,自身退居后臺:系統會先調用onPause方法,然后調用onStop方法,進入停滯狀態。
5.用戶后退回到此Activity:系統會先調用onRestart方法,然后調用onStart方法,最后調用onResume方法,再次進入運行狀態。
6.當前Activity處于被覆蓋狀態或者后臺不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而后用戶退回當前Activity:再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。
7.用戶退出當前Activity:系統先調用onPause方法,然后調用onStop方法,最后調用onDestory方法,結束當前Activity。
這就是一次完整的常規activity生命周期。
??從某種角度看,Activity為Android應用提供了可視化用戶界面,如果該Android應用需要多個用戶界面,那么這個Android應用將會包含多個Activity,多個Activity組成Activity棧,當前活動的Activity位于棧頂。
三、Activity/ActionBarActivity/AppCompatActivity的區別:
??在開始講解創建Activity之前要說下這三個的一個區別: Activity就不用說啦,后面這兩個都是為 了低版本兼容而提出的提出來的,他們以前都在v7包下,現AppCompatActivity在androidx包 下, ActionBarActivity已被廢棄,從名字就知道,ActionBar~,而在5.0后,被Google棄用了, 現在用 ToolBar…而我們現在在Android Studio創建一個Activity默認繼承的會是: AppCompatActivity! 當然你也可以只寫Activity,不過AppCompatActivity給我們提供了一些新的 東西而已! 兩個選一個,Just you like。
總結
以上是生活随笔為你收集整理的你了解Android中的Activity吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据字典动态生成下拉框
- 下一篇: Android中如何实现多个框,andr