java activity

作者:原创时间:2022-03-23
文档

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

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
西北五省是哪五省 java actuator java add java addall java advice java aes加密 java aggregation java akka ipad2是哪年的 java algorithm iphone呼叫失败是什么原因 java android java annotation java ant java apns 苹果13蓝牙搜索不到设备怎么办 java append java application java apriori java archive java activiti 瓮安县属于哪个市 java active 茉莉花茶是绿茶吗 java a++和++a的区别 熊猫只有中国才有的吗 idea新建一个java项目 java 32bit java -xms idea新建java项目 祁连山在哪个省境内 行程码带*号什么意思 南极洲有哪些国家 java -ea 铁观音产地是哪个地方 iterator java interface java integer java instant java instance java