【问题标题】:Android: Single activity, multiple viewsAndroid:单个活动,多个视图
【发布时间】:2013-10-28 18:59:01
【问题描述】:

虽然我开发了一个包含 50 多个活动的应用程序,但我不是 Android 专业人士,这使得该应用程序非常庞大。经过8周的开发,现在出现了导致应用程序难以维护和升级的问题。 我正在处理的主要是

  1. 我无法将对象引用传递给活动的构造函数。事实上,我发现startActivityForResultIntentonActivityResult 的机制确实受到限制,并导致每个活动的操作包含许多常量的脏代码和很多 switch case 这真的很难遵循流程应用程序。

  2. 另一个问题是我不知道如何管理整个应用程序的生命周期,因为每个活动都有自己的生命周期。

我对@9​​87654321@ 和J2ME – polish 有一些成功的经验,它们忽略了J2ME MIDlet(类似于android 活动)并实现了他们自己的架构和窗口系统,只有一个MIDlet 作为应用程序的入口。我对 android 也有同样的想法。

为了澄清,我正在考虑一个应用程序,它只有一个主 Activity 和其他活动作为扩展 View 对象的对象实现,这些视图可以动态添加到主活动 FrameLayout 并相互堆叠.活动的逻辑可以在这样的类中实现,我什至找到了一种以这种方式实现对话框的方法。 业务和状态对象可以传递给它们的构造函数,这听起来不错,忽略了编写更多代码的副作用。这种方式也可以将监听器传递给视图的构造函数,这使得应用 UI 切换和流管理更容易。

但问题是:

  • 这是一个好习惯吗?
  • 这不会导致我出现性能或内存问题吗?

我也知道

这些都没有通过合理的证据或书面参考明确解决有关绩效或实践的问题

请有人帮我解决这个问题

【问题讨论】:

  • 当项目如此庞大时,代码必须设计得当,把所有常用功能都抽出来。更好地构造数据(更好的数据结构)。在我看来,这些将有助于减少大量代码。
  • 事实上我已经做到了。尽管 android 不支持数据绑定,但我遵循了半 MVVM 模式。主要问题在于 UI 层和视图切换和发光在一起。

标签: android design-patterns


【解决方案1】:

市场上有一些流行的应用程序只有一个或几个活动。他们使用片段并切换它们。我更喜欢片段而不是你的方法。尽管我认为片段对于许多目的来说太复杂了,但对于您的用例来说,这将是一个很好的解决方案。您的 UI 行为应该在片段中,并且您的活动是在片段之间传输数据的控制器部分。片段也有自己的生命周期。

我也不喜欢startActivityForResult。如果我有一组活动 - 所有活动都提供数据 - 而且我不知道它们将按什么顺序被调用,我更喜欢使用单例类,然后使用意图在活动之间传输数据。但是你必须分析你的问题才能得到一个好的解决方案。

【讨论】:

  • 实际上我也利用了单例模式,因为应用程序是单用户的,但我的问题在于 Intents。我无法序列化侦听器并将它们传递给其他活动以基于用户操作和关于片段进行回调处理,我绝对同意你但是当我开始项目时我不知道片段现在在项目时间线的中间我害怕使用它们,因为我并不完全熟悉它们。我可能会在应用程序的下一个版本中使用它们。谢谢
  • 使用单个 Activity 作为控制器和 Android 框架其余部分之间的中介,在 Android 之上构建一个合适的 MVC 框架有多疯狂?类似于单页应用程序在网络世界中发生的事情。如果您有兴趣合作,请给我留言/发电子邮件。 :)
  • 我现在很忙,但是如果你开始这样的项目,你可以联系我,我可能会花一些时间在未来。
【解决方案2】:

已经构建了一个 MVC 框架,PureMVC library

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多