在Android应用中管理多个活动

6

我有一个包含许多活动的Android应用程序。 我通过在其代码中创建Intent对象来从上一个活动渲染下一个活动。 我认为这种代码很糟糕。 有没有“好”的方法来实现应用程序中的活动管理,最佳实践?


你有检查过ActivityManager吗? - Dan S
Dan,ActivityManager 不允许在活动之间创建连接、创建序列,避免在其他活动中创建意图。 - Sergey
抱歉,ActivityGroup - Dan S
你说:“我觉得这种代码很糟糕”吗? - MKJParekh
3个回答

4

实际上,作为Android开发人员,我们遵循一些标准做法:

  1. 创建仪表盘并根据特定的仪表盘选项单击启动活动
  2. 遵循选项卡设计

关于仪表板:

enter image description here

你可以从这里获取Dashboard示例。

关于TabBar: 为什么我更喜欢Dashboard而不是Tabbar?只是因为在Dashboard中实现活动管理真的非常容易,而在选项卡布局中,我们必须实现ActivityGroup概念,相比之下难以处理。


我已经下载了仪表板示例并导入到 Eclipse 中,但是当我尝试运行时遇到了大量错误。描述 资源路径 位置 类型 Android 需要编译器兼容级别为 5.0 或 6.0。找到了“1.7”。请使用 Android 工具 > 修复项目属性。 DashboardDemo 第一行 Android ADT 问题 项目“DashboardDemo”缺少所需的源文件夹:“gen” DashboardDemo 构建路径构建路径问题 在解决构建路径错误之前,无法构建该项目 DashboardDemo 未知 Java 问题 - Nick Kahn
  1. 请使用Android工具>修复项目属性。
  2. 项目->清理
- Paresh Mayani
你甚至可以使用我的文章/示例来实现仪表板设计模式 - Paresh Mayani

0

过去,我有一个应用程序,其中有4个视图,我希望能够循环浏览:

[返回 C] <-> D <-> A <-> B <-> C <-> [前往 D]

我应该指出,这4个活动都有一个共同的标题栏控件,上面有下一个/上一个按钮。

我创建了一个名为ActivityOrderer的类,它具有Class的静态列表和两个函数next和prev。例如,next执行以下操作:

public static Class<?> nextActivityClass(Class<?> current) {
    int currentIndex = _orderedActivities.indexOf(current);
    int nextIndex = (currentIndex + 1) % _orderedActivities.size();
    return _orderedActivities.get(nextIndex);
}

现在,我创建的每个Activity都会调用设置TitleBar的下一个和上一个按钮来启动创建的Intent:

_titleBar.setNextIntent(new Intent(this, ActivityOrderer.nextActivityClass(getClass())));

0

Android中的活动(Activity)被设计为彼此之间非常解耦。这部分体现在使用“意图(Intent)”启动活动的概念上。甚至听起来都不是很具体。

如果您对这种范式感到不舒服,可以考虑使用片段(Fragments)活动组(ActivityGroups)。虽然我通常不建议这样做,但您也可以编写自己的活动管理器(Activity Manager),将意图(Intent)封装起来,使启动和管理活动更加明确。


你认为在每个活动中创建返回单例Intent对象的静态方法怎么样? - Sergey
@Sergey 我的个人想法是最好采用你正在使用的语言或平台的范例。而静态方法和单例通常不是良好的面向对象设计。但我不知道代码的具体情况,你可能有很好的理由这样做。 - spatulamania

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接