5

我刚刚开始进行 android 开发,我正在尝试开发我的第一个应用程序,我实际上将要发布它。我有 Java 编程背景和一些模式的知识,但是我不知道在开发 android 应用程序时应该坚持哪些模式。还有在哪里放置线程。我正在开发一个应用程序,它不断地通过 PHP 脚本从远程数据库加载数据并将它们显示在 UI 上。我将一个应用程序分为几层——表示层、领域层/服务层和数据源层。在它们之间,我创建了门面来访问下面层的服务。我真的不知道我应该坚持这个结构还是根据其他一些模式完全重建这个应用程序。最好在开发之初就发现它,而不是在以后被迫重建整个应用程序。

4

3 回答 3

7

在我看来,单一职责原则和将整个应用程序分成不同的层(例如MVC模式但Android与正式的MVC不完全兼容)是Android开发中的一个很好的实践。下面我将讨论主要的层:

表示层:

例如 Android 框架为Presentation 层提供了一个非常简单的 XML 表示,关于这种 XML 表示,您不应该在代码中创建用户界面的东西。相反,您必须通过 XML 来完成。

应用逻辑层:

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

数据源层:

最后,您可以拥有一个数据源层,它的职责是提供数据、持久化数据以及所有与数据相关的东西。在 Android 中,你会在这一层放置一些东西,例如处理 SQLite、ContentProviders、SharedPreferences 等

结果:

我认为最好选择一个主要架构模式并根据您选择的模式以高抽象级别设计您的应用程序,然后实现其子层。我最喜欢的架构设计和实现方法听起来像是自上而下的方法,在这种策略中,您将以自上而下的方式设计您的应用程序/从更抽象到更少抽象/从更少细节到更多细节

于 2014-02-08T12:06:41.167 回答
1

我将一个应用程序分为几层——表示层、领域层/服务层和数据源层。

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

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

Android 有LoadersAsyncTasks的概念。它们帮助您将长时间运行的任务与 UI 分开。Android 开发者网站上有一个使用 Loader-API 的示例。

于 2013-09-11T15:53:17.477 回答
0

您可能希望将网络通信放在服务中,而不是 AsyncTask 或线程中。您的架构听起来像是某种形式的MVC,我认为这很好。

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

于 2013-10-02T11:11:37.813 回答