Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动/数据加载的片段责任_Android - Fatal编程技术网

Android活动/数据加载的片段责任

Android活动/数据加载的片段责任,android,Android,在为客户机启动新应用程序时,我再次问自己关于谁应该负责加载数据的相同问题:活动还是片段。我已经为各种应用选择了这两种模式,我想知道根据您的看法,哪种模式在以下方面是最好的: 限制代码复杂性 处理边缘情况(如屏幕旋转、屏幕运行节能、连接中断等) 选项1-活动加载数据&片段仅显示它 这样就可以有一些片段,这些片段只需输入一组对象即可显示。他们对加载数据以及我们如何加载数据一无所知 另一方面,活动使用所需的任何方法加载数据(例如,最初是最新的50个条目,在搜索中加载搜索结果)。然后将其传递给显示它

在为客户机启动新应用程序时,我再次问自己关于谁应该负责加载数据的相同问题:活动还是片段。我已经为各种应用选择了这两种模式,我想知道根据您的看法,哪种模式在以下方面是最好的:

  • 限制代码复杂性
  • 处理边缘情况(如屏幕旋转、屏幕运行节能、连接中断等)
选项1-活动加载数据&片段仅显示它 这样就可以有一些片段,这些片段只需输入一组对象即可显示。他们对加载数据以及我们如何加载数据一无所知

另一方面,活动使用所需的任何方法加载数据(例如,最初是最新的50个条目,在搜索中加载搜索结果)。然后将其传递给显示它的片段。加载数据的方法可以是任何内容(从服务、从数据库、…只知道POJO的片段)

这是一种MVC架构,其中活动是控制器,片段是视图

选项2-活动安排片段&片段负责获取数据 在此模式中,片段是应用程序的自治部分。他们知道如何加载正在显示的数据以及如何向用户显示数据


活动只是在屏幕上排列片段和协调应用程序活动之间转换的一种方式

理论上,如果可行,你可以做任何你想做的事。 实际上,片段和活动显示数据并处理它们自己的生命周期

由于片段属于活动,因此您必须将两者结合使用,以便更好地处理所有数据,但这主要取决于您的需要

如果您记住片段应该提供UI,活动应该提供处理,那么您就有一个良好的关注点和代码划分,这应该允许重用片段或活动

如果您了解MVC-Model-View-Controller设计模式,那么您可以将片段视为视图,将活动视为模型

当您使用多个片段构建应用程序时,事情会变得更加有趣

一些关键点作为决定因素-

  • 片段的概念是它是一个包装好的UI块 可供任何需要它的活动使用。在此基础上,你必须 扪心自问,必须处理的事件是否与其他事件相同 每项活动或每项活动的唯一性。如果是相同的,那么 事件处理程序最好在片段中编写

  • 片段没有自己的UI—它由 与片段关联的活动。事件是 由视图层次结构中的对象生成,视图层次结构由 活动。如果您尝试使用Android Studio添加事件处理程序, 例如,它将把它添加到活动中,而不是片段中

  • 您可以定义要处理事件的
    EventListener
    在片段中,然后将其连接到 要在其中生成事件的活动

  • 片段是一个类,它实现了
    onCreateView
    方法来 提供可由活动显示的视图层次结构

  • 要在活动中使用片段,必须使用 FragmentManager和FragmentTransaction。您可以添加片段 使用add方法,但在调用commit之前不会发生任何事情 方法

  • 在使用提交的方法之后,通常是活动的 一旦创建,终止CreateView事件并运行片段的 onCreateView和Fragments视图层次结构添加到 活动的内容

  • 您必须编写代码来保存和恢复任何附加状态 碎片可能有

  • 如果一个任务对于片段的所有实例都是公共的,那么它的代码 应该活在碎片里

  • 特别是,处理事件的代码可以在 碎片

  • 活动应用于承载处理数据的代码 由用户界面提供

  • 将活动事件处理程序附加到片段的UI或 很难正确地做

  • 从场景中决定您的应用程序将是什么。是服务,, 活动、小部件,甚至内容提供商或复杂系统, 包括一些不同的组件。对你的决定进行检验 情景

  • 所有这些都必须在碎片被销毁和销毁后才能发挥作用 重新创建

    (1)
    片段的初始化
    ,(2)
    保存和恢复片段的
    状态
    和(3)
    实现类似事件机制的东西,以便
    可以引起活动的注意

    最困难的部分是实现类似事件机制的东西

  • 对于复杂系统,分配功能和 应用程序组件之间的数据实体。列出一个组件列表 以及它们是什么(活动或其他)

  • 列出UI组件,并说明它们的作用(而不是如何) 然而)这些将是小部件和活动或片段或布局 稍后

  • 例如,您通常希望一个片段与另一个片段通信 根据用户事件更改内容。一片接一片 通过相关活动进行沟通。两块碎片 永远不要直接沟通

  • 当你的应用程序是完全模块化的时候,片段并不知道每一个 其他的。你可以添加片段,移除片段,替换片段, 他们都应该工作得很好,因为他们都是独立的,而且 该活动对配置具有完全控制权

  • 除非启动事务,否则无法对片段执行任何操作。 在tra内部