Android项目包结构

2024-03-10

我想知道如何为 Android 应用程序创建灵活的包结构,以便于扩展和管理。我的第一个想法是将每个应用程序组件放在单独的包中,例如:

spk.myapp.main.(主要活动中使用的所有类) spk.myapp.processor.(处理器提供程序使用的所有类)

...等等。然而,我不喜欢的方面是,类和包命名约定可能很快就会与其他完全限定的名称不一致,例如提供者权限(在这种情况下,我宁愿将这些命名为spk.myapp.processor than spk.myapp.processor.processor正如类包路径所建议的那样)。

我已经做了一些研究,但大多数页面都解释了初始项目目录结构,而不是为更大的项目建议一个目录结构。

我的问题可能听起来很愚蠢,但我喜欢从一开始就在我的项目中保持秩序,这样进一步管理和扩展它们就不会涉及不必要的重构或清理。另外,我对Java没有太多经验,我希望从一开始就养成良好的习惯。

Android项目有没有一套好的、可靠的项目包结构和命名规范?


维基百科有有用的注释 http://en.wikipedia.org/wiki/Java_package在 Java 包上。包的有用主要有两个原因:

  1. 包为其包含的类型提供唯一的命名空间。
  2. 同一包中的类可以访问彼此的包访问成员。

第一点意味着您可以按逻辑功能对项目进行分组。活动可以驻留在活动包下,您的服务可以驻留在服务包下。

第二点非常重要,但常常被忽视。包访问允许您做一些聪明的事情。例如,您可以拥有一个“构建器”类,它可以构建和填充具有包访问属性的模型,而无需添加大量 setter 方法或使用公共属性。这可以使对象创建变得非常简单和直观,而对象在包外保持不可变。

这个原则的一个很好的例子可以在 Romain Guy 的书中找到。Shelves http://code.google.com/p/shelves/source/browse/#svn/trunk/Shelves/src/org/curiouscreature/android/shelves/provider应用程序。这书店类 http://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature/android/shelves/provider/BooksStore.java可以创建 Book 对象并修改其成员,而无需将这些字段暴露给其他类(在其他包中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android项目包结构 的相关文章

随机推荐

  • 具有重载赋值的嵌套派生类型

    我有一个派生类型 wrapper 包含其他派生类型 over 对于后者 赋值运算符已被重载 由于派生类型的分配按默认组件方式发生 因此我希望分配两个实例wrapper将调用重载分配over在某一点 然而 使用下面的程序 情况似乎并非如此 仅
  • SelectById2 的指针标注

    我正在尝试将我在 VBA 中编写的一些代码移植到 Python 中以控制 Solidworks 特别是自动化草图编辑 我在 Python 中使用 Solidworks SelectById2 时遇到问题 在 VBA 中 以下代码工作正常 P
  • PHP continue 函数内

    这可能非常微不足道 但我一直无法弄清楚 这有效 function MyFunction Do stuff foreach x as y MyFunction if foo bar continue Do stuff echo output
  • Java 并发:Synchronized(this) => 和 this.wait() 和 this.notify()

    我非常感谢您帮助理解以下内容的 并发示例 http forums sun com thread jspa threadID 735386 http forums sun com thread jspa threadID 735386 pub
  • 计算时间跨度的最佳方法是什么

    在我的 C 程序中 我的要求是计算 foreach 循环内的业务逻辑执行的时间跨度 我必须存储时间跨度 我正在使用以下代码 for int i 0 i lt 100 i DateTime start DateTime Now Busines
  • Docker 信任初始化

    当对 tuf 上的公证人对 docker 内容信任的初始信任初始化时 我了解了 TUF 公证人和内容信任的工作原理 但我不清楚的是 最初的信任是如何建立的 我怎么知道第一次拉取没有受到损害并且初始 root json 是值得信赖的 例如 如
  • 使用foldr实现zip

    我目前正在阅读 Real World Haskell 的第 4 章 我正在努力理清思路根据foldr 实现foldl http book realworldhaskell org read functional programming ht
  • 寻找一种非“蛮力”算法来删除矩形集合的相交区域

    我有一个 n 大小的矩形集合 其中大部分彼此相交 我想删除相交并将相交的矩形减少为较小的非相交的矩形 我可以轻松地暴力破解解决方案 但我正在寻找一种有效的算法 这是一个可视化 原来的 处理 理想情况下 方法签名如下所示 public sta
  • 如何解决以下 SDK 版本报告了严重问题:com.google.android.gms:play-services-safetynet:17.0.0

    我在发布应用程序时收到此警告 play services safetynet 的开发商 com google android gms play services safetynet 已报告严重 版本 17 0 0 存在问题 在发布新版本之前
  • C# 中的 N 体模拟

    我正在尝试使用 Runge Kutta 4 或 Velocity Verlet 集成算法在 C 中实现 N 体模拟 在我转向更多数量的粒子之前 我想通过模拟地球绕太阳的轨道来测试模拟 但是 由于某种原因 我得到的不是椭圆轨道 而是一个奇怪的
  • 从 C# NUnit 在多个浏览器中依次运行 Selenium 测试

    我正在寻找推荐 最好的方法来使 Selenium 测试在多个浏览器中相继执行 我正在测试的网站不大 所以我还不需要并行解决方案 我有常用的测试设置方法 SetUp TearDown and Test 当然 SetUp 会实例化一个新的ISe
  • 使用 GeoFire 按半径查询位置

    我知道这是一个基本问题 但我仍然遇到很多麻烦 我有一个 Firebase 数据库存储社区事件 每个事件节点都有一个地理位置节点 使用 GeoFire 创建 称为活动地点 见下面的截图 使用 GeoFire 和 javascript 我将如何
  • 如何在图像上绘画并将该图像保存到 Android 中?

    我是画布新手 我想使用我已保存的图像并希望在该图像上进行一些绘制 之后我想保存它 我知道使用 Canvas 这是可能的 我可以在图像上绘画 但是当我要存储该图像时 它只保存了绘画 不是绘画的图像 那么有人可以告诉我如何在图像上绘画并保存该图
  • android ndk-构建错误

    我正在尝试为 Android 构建 tesseract 我已将 tesseract 放入示例文件夹中 C Android NDK android ndk r8 samples tesseract之内tesseract我有的文件夹tesser
  • CSS 网格并指定多个区域

    我需要一些元素重叠 我还想通过区域名称而不是行 列来指定内容 因为这样可以更好地阅读 我一生都无法理解如何按照 MDN 示例指定多个网格区域 或者 如果它甚至可能 文章建议它根据语法示例是可能的 但它实际上是如何工作的 没有任何线索 问题示
  • 解决多源多汇流网络的最优方式

    为了简单起见 假设我们有以下问题 我们正在为城市中的自动驾驶汽车编写 GPS 我们假设运行我们软件的汽车是路上唯一的汽车 他们将城市的布局表示为一个流网络 但流网络有多个起点 终点 因此存在多个不一定彼此靠近的源 汇 有没有有效的解决方案来
  • 如何覆盖 node.js http 以对所有出站请求使用代理

    我最近创建了一个 node js 应用程序 可以访问社交媒体网站并缓存我们的公共源 我正在使用一些现有的 npm 模块来方便访问社交媒体 api 它在我的开发环境中就像一个魅力 但在我们的生产环境中 请求超时 因为它们需要通过代理 无需修改
  • 构造函数参数的所有组合

    很可能是一个愚蠢的问题 但无论如何 是否有一种简短的方法来声明采用任意参数组合的构造函数 例如 具有 3 个参数的 ctor 有 2 3 种可能的组合 如下面的模型所示 template
  • 将正则表达式中的文本更改为大写

    我有个问题 如何将 HTML 标签 之间的文本更改为大写字母 部分代码 string a b hello world b table test table a Regex Replace a lt n gt String Empty 现在
  • Android项目包结构

    我想知道如何为 Android 应用程序创建灵活的包结构 以便于扩展和管理 我的第一个想法是将每个应用程序组件放在单独的包中 例如 spk myapp main 主要活动中使用的所有类 spk myapp processor 处理器提供程序