當前位置:科普知識站>IT科技>

java|activity

IT科技 閲讀(1.52W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java activity是什麼,讓我們一起了解一下?

activity是Android組件中最基本也是最為常見用的四大組件之一。Activity也是一個與用户交互交互的系統模塊,幾乎所有的Activity都是和用户進行交互的,只需要提供一個屏幕,用户就可以用來交互為了完成某項任務。

java中的activity主要作用是什麼?

首先在深入瞭解Activity之前,我們先要知道一下MVC設計模式,在JAVAEE 中MVC設計模式已經很經典了,而且分的也比較清晰了,但是在Android中,好多人對MVC在Android開發中的應用不是很清楚,我們來了解一下MVC在Android開發中的應用。

java activity

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);           }       }   }