【发布时间】:2011-06-11 23:33:52
【问题描述】:
我正在寻找一些设计模式,用于在Android 应用程序中控制一组Activitys。我目前正在开发一个应用程序,我觉得它会经历许多 UI 的修改,直到它的“最终”发布(如果有的话)。我正在考虑使用Service 中的控制器的Observer 模式,但我找不到任何好的例子。我发现唯一常见的引用是使用AIDL 进行进程间接口绑定,这将不适用。
基本上我想要的是让Activity 实现定义的Interface,例如showLoginScreen()、loginError() 等,这样任何UI 都应该能够实现(控制器不直接绑定到视图,只有它的接口)。如果这是完成此操作的最干净的方法,那么获取活动Activitys 的句柄的最佳接受方法是什么?我一直很困惑当你在一个不活跃的Activity 上调用一个方法时会发生什么。
我在想类似于Application 类中的Map 作为单身人士? Map 的 put() / remove() 将绑定到 onStart() 和 onPause()。这仍然不能保证Activity 仍然存在...可以通过键上的get() 获得引用,然后在Service 有机会调用它之前它可能是paused()界面。
任何建议或见解将不胜感激。
编辑:我看过其他帖子,例如MVC pattern on Android,但它们大多没有解决实施问题(而且我完全不同意这个公认的答案)
【问题讨论】:
-
为什么要进行多项活动?每个 Activity 是否代表您在 MVC 中的视图?
-
每个活动都是一个单独的屏幕,用户需要与之交互。它们不会是试图完成相同任务的多项活动。除了全屏 3D 游戏,我不知道任何只有一个 Activity 的应用程序。
-
您是否考虑过使用单个 Activity 作为控制器,然后在运行时动态切换屏幕/视图?
-
^ 这是一个糟糕的 Android 设计决策,因为您失去了 xml 配置的灵活性。操作系统无法再自动为您选择最佳布局,而是您必须自己管理所有这些
-
我不关注。 Android 如何确定最适合您的布局?您是指纵向和横向之间的关系吗?
标签: java android model-view-controller design-patterns controller