java - 安卓应用架构

标签 java android

我背后有很多 .Net 开发,我的大部分应用程序都分层在 UI、服务、BL 和 DAL .. 以及数据库层。每个层通常都是它自己的项目,所有层都相互引用以使数据流贯穿解决方案。

我是 Java 和 Android 的新手。看起来我们开发了一个输出文件,因此,一个项目。我会简单地为每一层使用不同的文件夹吗?也许是一个 ServiceLayer 文件夹,里面有类,然后是一个 BusinessLayer 文件夹,里面有业务类?

保持代码整洁和可维护的通常结构是什么?我不是出于专业原因这样做(目前)。纯属学习。

编辑:该应用程序将只是一个简单的应用程序,允许用户每天输入有关某事的数据(简单的用户界面,可能有一些下拉查找从数据库中获取“引用数据”),并允许用户选择一些东西,输入一些细节,然后存储到内置的 SQLite 数据库中。

一旦成功,我想将数据同步到在线数据库(我将编写一个托管在 .Net 托管系统(GoDaddy,目前)上的网络服务),它将存储最新数据,并提供一个网络前端如果用户可以访问笔记本电脑或个人电脑,则可以更轻松地输入数据)。因此,某种网络服务可以刷新我的应用程序,并将更新发送到服务器。

最佳答案

首先,这取决于你在做什么应用。

您应该对用户如何使用应用程序进行文字或示 Intent 描述。确定每一种可能的情况。放下示例,稍后将用于测试。

决定什么属于功能,什么属于可变配置。从场景中提取功能和数据实体。

根据场景决定您的应用程序。是服务、 Activity 、小部件,甚至是内容提供者或复杂的系统,包括一些不同的组件。根据场景测试您的决定。

在复杂系统的情况下,在应用程序组件之间分配功能和数据实体。列出组件及其内容( Activity 或其他)。

列出 UI 组件并描述它们的作用(还不是 HOW)这些将是小部件和 Activity 或 fragment 或稍后的布局。

为 UI 组件制作草图布局。从一个到另一个进行简单的传球。看看用户界面。返回场景并使用您的草稿 UI 播放所有场景。所有 UI 组件和类都放在一个包或包的层次结构中。

列出数据实体。决定什么将在什么。将它们规划为数据库或不同数据库中的集合或表。将它们作为类,将它们放入另一个包层次结构或另一个包中。这里还放置了 DB 助手 - 通过 SQL 与 DB 对话的类。

创建一个测试类,用于使用测试数据填充 UI 和数据实体并启动它们。

适配器不需要公开,因为它们仅在其父 GroupView 中使用。因此,通常没有适配器文件。

不要将所有全局变量都放入特殊的静态类中——这是一种不好的做法。您正在混合使用代码和配置。

将配置数据放入资源中。如果其中一些很复杂,请使用 XML 源和解析器。使资源数据的读者成为全局变量。并非所有这些都是静态的!例如,它们可能属于主 Activity 实例。

不要在代码中使用不可配置的常量!可能是,只有你的名字:-)。其他常数有时会变成非常数。

始终这样做:写一些东西 - 将一些东西连接到批量 - 为这个新事物添加测试 - 测试这个新事物 - 测试批量 - 重复。只需一小步!

关于java - 安卓应用架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918388/

相关文章:

android - activity.isFinishing 语句中的 BadTokenException : Unable to add window -- token null is not valid; is your activity running?

Java 声音在我停止后不起作用

android - 来自 styles.xml 的 TabWidget 背景样式

java - 由于无法读取源文件,该项目未构建

java - 使用 JGit 的现有存储库的空标签列表

安卓 : Change theme background of Popup menu

android - Android 中的 Activity 交互

java - 高效的大字符串(in)相等函数

java - 即使不使用 put(),对象的属性也会在 Map 中更改吗?

java - 如何在将使用 getResourceAsStream() 加载的 XML 文件中包含 DTD?