Android架构模式

时间:2013-09-11 15:17:59

标签: android design-patterns architecture architectural-patterns

我刚开始使用android开发,我正在尝试开发我的第一个应用程序,我实际上要发布它。我有Java的编程背景和一些模式的知识但是我不知道在开发Android应用程序时我应该坚持哪些模式。还有把线放到哪里。我正在开发一个应用程序,它通过PHP脚本不断地从远程数据库加载数据并在UI上显示它们。我将应用程序划分为几层 - 表示层,域层/服务层和数据源层。在他们之间我创建了外观来访问下面的层的服务。根据其他一些模式,我真的不知道我是否应该坚持这个结构或完全重建这个应用程序。最好在开发开始时找到它,而不是在以后强制重建整个应用程序。所以,如果有人可以提供一些我可以使用的建筑模式的链接,或者在这里写一些简短的东西,我真的很感激!

3 个答案:

答案 0 :(得分:7)

在我看来single responsibility principle并将整个应用程序分成不同的层(例如MVC pattern但Android与正式的MVC不完全兼容)是Android开发中的一个很好的做法。现在我要谈谈以下主要层次:

表示层:

例如,Android框架为表示层提供了非常简单的XML表示。关于此XML表示,您不应在代码中创建用户界面内容。相反,您必须通过XML来完成它。

应用逻辑层:

对于应用程序逻辑层,最好在代码中完成它,而不是在其他地方完成它。例如,Android XML中有一个android:onclick="function_name"属性(用于将onClickListener分配给View)但作为MVC模式,视图/表示层必须与控制器/逻辑层完全分离。

数据源图层:

最后,你可以拥有一个数据源层,它的职责是提供数据,持久化数据和所有数据相关的东西。在Android中,您可以在此层中添加一些内容,例如处理SQLite,ContentProviders,SharedPreferences等

<强>结果:

我认为最好选择一个主体系结构模式,并根据您选择的模式在高抽象级别设计您的应用程序,然后实现其子层。我最喜欢的建筑设计和实施方法听起来像是自上而下的方法,在这个策略中你可以用从上到下方式设计你的应用程序/ 更抽象到不那么抽象 / 更少详细信息

答案 1 :(得分:1)

  

我将应用分为几个层次 - 表示层,域层/服务层和数据源层。

或者,您可以通过其功能垂直划分应用。因此,您可以获得每个功能或活动的包,可能包含子包。一个好的经验法则是:一个包不应该包含比你(或其他人)更容易理解的更多逻辑。这种技术有一些优点。首先,当您向应用添加更多功能时,您的包不会变得越来越大。其次,维护不同功能之间的依赖关系变得更加容易。也许您的IDE可以生成包的依赖矩阵。

  

还放置线程的位置。我正在开发一个应用程序,它通过PHP脚本不断地从远程数据库加载数据并在UI上显示它们。

Android具有LoadersAsyncTasks的概念。它们可以帮助您从UI中分离长时间运行的任务。在Android开发者网站上有一个example使用Loader-API。

答案 2 :(得分:0)

您可能希望将网络通信放在Service而不是AsyncTask或Thread中。 你的架构听起来像某种形式的MVC,这在我看来很好。

我认为Activity对你来说是一个很好的起点。了解它的生命周期以及如何向用户展示您的数据。您还可以阅读有关threadsconnectivity的更多信息,了解自己在Android中是如何完成的。