热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

为什么不总是使用一个活动的片段

如何解决《为什么不总是使用一个活动的片段》经验,为你挑选了1个好方法。

为什么有人会创建活动而不是一个包含许多碎片的活动?我看到使用片段,分享数据更容易,而且您最好使用onpause来确定应用程序是转到后台还是片段正在切换.

我错过了什么吗?

谢谢



1> kha..:

(提前答复道歉)

我认为没有什么能阻止你这样做.

话虽如此,我如何看待活动是一个我可以定义当前转换的整个UI屏幕应该如何看待的地方:它应该包含哪些片段以及这些片段应该如何并排放置,更重要的是如何申请流程.

我的活动中的碎片应该共同构成一个有意义的屏幕,其中包含我期望的功能,并且应该可以重复使用,但是他们不应该知道其他碎片的存在.这是活动的工作.事实上,我强烈遵守一个片段永远不会知道另一个片段的存在的规则(尽管现在你可以在片段中包含片段,这会破坏这一点).如果我需要转换到完全不同的用例集,我更喜欢使用活动来处理转换以及要使用的新布局和片段集.

我必须这样做吗?不,我可以在一个主要活动中完成所有操作并自己在这些"准活动片段"之间进行转换,但是当我已经有一个适合我的框架时,我为什么要这样做呢?使用意图来初始化活动(转换)要比手动编写我自己的引擎更加简单和清晰,它可以跟踪我所有碎片的状态,并决定启动哪些碎片以及哪些碎片可以摆脱.

类似地,使用活动中的内置功能比处理自己更容易处理不同的方向和设备大小,但同样,没有什么能阻止您这样做.

在一个例子中更容易解释这个:

想象一下这个用例:我需要编写一个显示歌曲和电影列表的应用程序.当我点击其中一首歌时,它应该打开一个媒体播放器并在一个单独的屏幕上播放,当我点击一部电影时,它应该打开一个视频播放器并播放视频.这里有明显的转换:从主列表到音频播放器或视频播放器,然后返回.

使用一个活动和3个片段执行此操作时,我必须使用适当的媒体播放器片段(视频/音频)替换列表片段,并在用户单击列表项时自行删除列表片段(以保留内存) .这一切都很好,很容易做但如果我还要添加一种方法来为歌曲/电影添加评论,会发生什么?现在我必须修改我的主要(也是唯一的)活动来理解如果某人正在播放歌曲并点击评论按钮的行为,我需要再次转换到另一个片段并允许该片段捕获/显示评论.

正如您可能想象的那样,每次添加新功能时,我都必须修改我的主要活动来处理转换,因为片段并不是要彼此了解并且是彼此独立的.

如果我只有一个活动,我最终会做的是创建一个神级(我的主要活动),其中定义了我的应用程序的整个流程.随着应用程序变得复杂,维持此流程将变得越来越复杂.同样,这是基于具有独立片段的原则.如果你不关心你的碎片知道彼此,那是完全不同的,但在我看来,你做错了:)

我怎么用活动呢?我仍然会有3个片段,但也会有3个活动,其唯一的工作是保持与其他活动的转换,并定义应该使用哪个片段.将列表活动转换为歌曲活动是一个简单的意图,并为我完成释放内存.现在,如果歌曲活动需要转换为评论活动,那么这只是歌曲活动中评论活动的另一个意图.我根本不需要更改列表活动,事实上,列表活动永远不会知道此评论活动的存在.

我知道这是一个非常简单的示例,但随着您的应用程序变得越来越复杂,并且随着您添加越来越多的用例,您会发现拥有多个活动是有意义的.您不希望自己维护片段之间的转换,否则您将最终得到一个非常复杂的框架,这将慢慢变得无法维护.

根据屏幕的方向和大小,相同的逻辑将适用于具有不同的片段/布局.同样,无论如何,你可以在你唯一的活动中自己处理这些问题,但问题变成了:为什么?


推荐阅读
  • 本文详细介绍了如何在Windows系统中安装并使用JEB逆向工具,包括必要的环境配置和基本操作指南。 ... [详细]
  • Android 手机安全应用首屏布局设计
    本文详细介绍了如何构建一个功能丰富的手机安全应用的首个导航界面布局。通过实例代码和效果展示,帮助开发者快速理解和实现相关功能。 ... [详细]
  • 解决fetch上传图片至微信公众号H5页面的问题
    在近期的一个项目需求中,需要在微信公众号内嵌入H5页面,并实现用户通过该页面上传图片的功能,包括拍摄新照片或从已有相册中选择。前端开发中采用了fetch API进行接口调用,但遇到了上传图片时数据无法正确传递的问题。 ... [详细]
  • 如何将Redis配置为后台服务
    本文介绍了在安装Redis后,如何通过修改配置文件使其以守护进程模式在后台运行,避免因控制台被占用而无法进行其他操作的问题。 ... [详细]
  • Linux 文件系统结构详解
    本文详细介绍了Linux操作系统的文件系统结构,包括其独特的树状目录体系、根目录的作用、目录与磁盘分区的关系等,并对各主要目录的功能进行了深入解析。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 本文探讨了使用Lighttpd与FastCGI实现分布式部署的方法。通过在中心服务器上配置Lighttpd负责请求转发,同时在多个远程服务器上运行FastCGI进程来处理实际业务逻辑,从而提高系统的负载能力和响应速度。 ... [详细]
  • 盐池元宵夜色
    盐池县的元宵之夜灯火辉煌,各式各样的灯笼装饰着小镇,营造出浓厚的节日气氛。九曲民俗文化园的新建成为了节日的一大亮点,不仅展示了丰富的传统文化,也为游客提供了独特的体验。 ... [详细]
  • 使用Inno Setup将EXE与JRE封装为Windows安装程序
    本文详细介绍了如何利用Inno Setup工具将EXE文件及Java运行环境(JRE)整合为适用于Windows操作系统的安装程序。我们将提供必要的软件下载链接,并逐步指导您完成整个打包过程。 ... [详细]
  • 本文详细介绍了如何在VUE开发环境中正确安装和配置Nightwatch及Karma相关插件,并解决运行测试时遇到的Java版本不兼容问题。 ... [详细]
  • 本文介绍了在 Android 开发中如何实现像素 (px)、缩放独立像素 (sp) 和密度独立像素 (dp) 之间的相互转换。这些方法对于确保应用在不同屏幕尺寸和分辨率上的适配至关重要。 ... [详细]
  • 本文探讨了为何采用RESTful架构及其优势,特别是在现代Web应用开发中的重要性。通过前后端分离和统一接口设计,RESTful API能够提高开发效率,支持多种客户端,并简化维护。 ... [详细]
  • 本文提供了中国三大主要通信运营商(中国联通、中国电信和中国移动)的官方邮箱服务网站链接,帮助用户快速访问并管理个人邮件,同时介绍了如何设置短信提醒功能。 ... [详细]
  • Linux环境下Memcached安装指南
    本文详细介绍如何在Linux虚拟机上安装Memcached,包括必要的依赖库安装,以及使用Xshell进行文件传输的具体步骤。 ... [详细]
  • 矩阵交织技术详解
    本文介绍了矩阵交织的工作原理及其在通信系统中的应用。交织技术通过对信息码元的重新排列,能够在不增加编码冗余度的情况下,提升系统的突发错误检测能力,从而增强整体性能。 ... [详细]
author-avatar
姚威阳_489
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有