2009-12-31 77 views
0

我开始一个Android应用程序,它将有多个活动。它将在OAuth中使用REST API。我测试了OAuth并成功解析了返回的xml。使用web api的Android应用程序的设计

我的问题与这样的客户端设计架构有关。我有一个HttpClient和OAuthConsumer对象,这些对象将从各种活动中使用。我开始设计一个DaoFactory模式,为各种API调用提供DAO。但我不知道如何使这个模式在Android框架中工作。每个活动可以来去,用户在屏幕上移动。我应该在哪里存储这些对象?我应该让它们成为Application类的成员并使用getApplication()访​​问它们吗?我应该将网络调用和xml解析代码放入服务中以便使用每个活动?

我想我试图让它像一个3层web应用程序,但正在寻找其他丰富的Android客户端的例子。我感谢任何帮助或建议。

回答

2

这取决于你的应用程序的细节当然。如果网络调用可以在后台继续,与任何可见的活动无关,那么您可能希望将它们放入服务中,并让每个感兴趣的活动绑定到该服务。

顺便说一句,企业Java中常用的模式应用到Android并不总是一个好主意:请参阅Designing for Performance

+0

是的我想我只是想把自己的脑袋围绕有一个“活动联盟”的想法。当我开始使用单个活动时,很容易,因为它具有OAuthConsumer的成员字段。当我开始添加更多活动时,我意识到他需要移动到其他地方,只是不知道在哪里。最简单的解决方案似乎是应用程序类。每个活动都可以从父应用程序实例中获取OAuthConsumer和HttpClient实例。但我在某处读到Android开发人员真的不鼓励这种方法。不确定推荐的方法是什么。 – GrkEngineer 2009-12-31 01:28:48

+1

所以我走下了使用服务的道路,但我真的认为我需要什么,我只需要继承Application类。我只需要可以在我的活动中共享的全局变量。有太多的问题,例如无法在onResume函数中调用服务。尽管我试图绑定到onCreate中的服务,但它只是在Activity的onResume之后创建的。 – GrkEngineer 2009-12-31 09:19:51

+0

那么如果你只需要在活动之间共享一些数据,那么使用Application就更简单了。我假设您即使没有看到“活动”,也需要执行网络通话。 – 2009-12-31 13:26:11