Android的体系结构devise – 如何做到这一点?

如何一个Android应用程序的好架构看起来像? 是否所有的“工作/业务逻辑”都是在后台服务中完成的,Activity只和服务进行通信,以从某处(本地/远程)查询/获取数据?

你会实施活动称为真正的Android服务的“服务”吗? 或者是一个POJO-Singleton来完成这个工作(也许使用后台线程)。 或者在你的活动中实例化后台线程,用于耗时的操作(查询web服务)。

你如何以正确的方式抽象你的数据访问? 你会用ContentProvider来访问/抽象你的数据吗? 如何/从哪里查询? 活动? 服务? ..?

我试图寻找一个好的应用程序架构devise,但我只发现了Android架构的外观,而不是Android应用程序的样子。

那么你对此有何看法? Android应用程序的哪些组件应该相互通信以确保最佳的可扩展性/封装性,…?

这个问题没有人回答。 好的OOdevise不是Android特有的。 我会说规则是 – 如果框架为您提供适合您的用例的高级对象(例如Android的服务),请使用它。 如果你发现你自己在框架中使用POJO实现了相同的东西,那就去框架吧。

至于关注的分离,这是标准的面向对象的东西。 不要把任何东西放在你的活动类中,而不是活动的工作。 用活动所需的但不是真正活动的工作的方法和属性填充活动很糟糕 – 使活动的意图难以理解。

我通常将东西分成我的应用程序中的子包。

  • com.myname.myproject.app – 基类,全局应用程序function
  • com.myname.myproject.net – networking的东西,networking相关的应用
  • com.myname.myproject.data – db助手,提供者等
  • com.myname.myproject.model – 对象模型

等等

至于在您的应用程序内通信…

我总是有一个自定义的应用程序类,我在清单中注册。 这样,当我有需要成为一个“单一实例”的控制器和帮助器时,我不必做所有那些疯狂的线程安全的单例东西…我只保留一个全局副本。

RoboGuice是一个dependency injection框架,使得它更容易完成…绝对值得研究。 如果您感兴趣的话,Google Group for RoboGuice是非常棒的,并且不断充满着框架的创造者,他们基本上可以回答您需要的任何东西。

就应用程序通信而言,我使用单个实例控制器和状态类来保存状态并执行常见任务,而且我通常使用BroadcastIntents来与服务中的活动进行通信