Android是否正在使用Application Class作为控制器?

时间:2013-08-07 00:27:50

标签: android oop architecture

我想让我的所有活动(7到10个不同的屏幕)向“控制器”提交数据(对不起,如果我错过使用该术语)。

内部所述控制器数据将上传或保存到数据中,以便在没有互联网时上传 控制器将执行检查和处理,例如:

  • 检查有效会话。
  • 之前附加其他所需的凭据 上传等 会话/用户数据将存储在控制器引用的共享首选项文件中。

我的目标是让Activities只是收集数据并异步调用适当的方法(使用数据对象)。控制器将知道如何处理数据以便上载或保存在数据库中。

将这些方法放在应用程序的扩展中是不是一个坏主意?

  

有人提到,根据应用程序的大小,这是可行的,但可能有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

根据项目的大小,这是一个合适的想法。但是,在选择实际实施的方法之前,您还应该了解其他一些方法:

  • 使用ContentProvider为您的数据AccountAuthenticator,然后使用SyncAdapter同步到服务器。优点是良好的抽象,独立于活动和许多内置功能(例如:Android执行代码而不会对电池寿命造成很大影响)。然而,首先实现所有的东西是相当多的工作。如果您不想使用ContentProvider,同样的技巧也适用于stub implementationAccountAuthenticator同样适用。
  • 使用Service(可能是IntentService)来满足您的上传需求。优点是服务具有独立的生命周期,因此与您的活动没有直接关系;如果服务已被系统杀死,则可以重新启动服务。还有更多工作,而不仅仅是使用一些静态方法。
  • 在提议时使用静态方法(在您的情况下,是Application对象;不是完全静态的,但可以比较)。非常容易实现,如果在多个活动中有类似的任务,可能是最好的方法;您的AsyncTasks可以将结果直接发送到启动它的活动中。但不适合长时间运行的任务。
  • 在活动中实施;如果代码只使用一次;仅为完整性而列出,不适用于您的情况。基本上与使用静态方法相同。

这些是我脑海中浮现的,也可能是其他一些。随意添加/建议添加其他内容。