java activity是什么,讓我們一起了解一下?
activity是Android組件中最基本也是最為常見用的四大組件之一。Activity也是一個與用戶交互交互的系統模塊,幾乎所有的Activity都是和用戶進行交互的,只需要提供一個屏幕,用戶就可以用來交互為了完成某項任務。
java中的activity主要作用是什么?
首先在深入了解Activity之前,我們先要知道一下MVC設計模式,在JAVAEE 中MVC設計模式已經很經典了,而且分的也比較清晰了,但是在Android中,好多人對MVC在Android開發中的應用不是很清楚,我們來了解一下MVC在Android開發中的應用。
M(Model 模型):Model是應用程序的主體部分,所有的業務邏輯都應該寫在這里,在Android中Model層與JavaEE中的變化不大,如:對數據庫的操作,對網絡等的操作都放在該層(但不是說它們都放在同一個包中,可以分開放,但它們統稱為Model層)。
V(View 視圖):是應用程序中負責生成用戶界面的部分,也是在整個MVC架構中用戶唯一可以看到的一層,接收用戶輸入,顯示處理結果;在Android應用中一般采用XML文件里德界面的描述,使用的時候可以非常方便的引入,當然也可以使用JavaScript+Html等方式作為View。
C(Controller控制層)android的控制層的重任就要落在眾多的activity的肩上了,所以在這里就要建議大家不要在activity中寫太多的代碼,盡量能過activity交割Model業務邏輯層處理。
這就是Android應用開發中的MVC架構,我們就可以很明確的知道,在Android中Activity主要是用來做控制的,它可以選擇要顯示的View,也可以從View中獲取數據然后把數據傳給Model層進行處理,最后再來顯示出處理結果。
實戰中,Activity應該如何應用?
我們以Activity的啟動過程為例,側重于分析相關數據結構的構建與管理,以達到理解整個AMS對Activity的管理。
android中是通過Intent來啟動一個新的activity的,因此AMS在得到請求啟動activity時,首先需要根據Intent從PM中獲得要啟動的activity,PM通過parse 每個application的AndroidManifest.xml來獲得所有的activity信息,針對每個Intent提供的信息,PM會提供給AMS一個ResolveInfo對象。
startActivityMayWait()@ActivityManagerService.java
//?Don't?modify?the?client's?object!?? ?intent?=?new?Intent(intent);?? ?? ?//?Collect?information?about?the?target?of?the?Intent.?? ?ActivityInfo?aInfo;?? ?try?{?? ?????ResolveInfo?rInfo?=?? ?????????AppGlobals.getPackageManager().resolveIntent(?? ?????????????????intent,?resolvedType,?? ?????????????????PackageManager.MATCH_DEFAULT_ONLY?? ?????????????????|?ActivityManagerService.STOCK_PM_FLAGS);?? ?????aInfo?=?rInfo?!=?null???rInfo.activityInfo?:?null;?? ?}?catch?(RemoteException?e)?{?? ?????aInfo?=?null;?? ?}?? ?? ?if?(aInfo?!=?null)?{?? ?????//?Store?the?found?target?back?into?the?intent,?because?now?that?? ?????//?we?have?it?we?never?want?to?do?this?again.??For?example,?if?the?? ?????//?user?navigates?back?to?this?point?in?the?history,?we?should?? ?????//?always?restart?the?exact?same?activity.?? ?????intent.setComponent(new?ComponentName(?? ?????????????aInfo.applicationInfo.packageName,?aInfo.name));?? ?? ?????//?Don't?debug?things?in?the?system?process?? ?????if?(debug)?{?? ?????????if?(!aInfo.processName.equals("system"))?{?? ?????????????mService.setDebugApp(aInfo.processName,?true,?false);?? ?????????}?? ?????}?? ?}
以上就是小編今天的分享了,希望可以幫助到大家。