java - activity

来源:趣味经验馆 1.44W

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

热门标签