Android包组织

时间:2015-06-18 17:34:42

标签: java android

我是Android开发的新手,所以我对Android项目/代码设计有一些疑问。

  1. 人们通常会将API调用拆分为单独的类/类吗?或者你是在对象本身内调用它们吗?
  2. 包只是子目录吗?据我所知,它们仅用于程序员作为组织工具的利益。
  3. 我知道这些问题有些主观,但我对其他开发人员如何组织代码感兴趣。谢谢!

2 个答案:

答案 0 :(得分:5)

广告包组织 - 我为Android开发了大约两年的应用程序,我和Andrea Cinesi编写的内容类似。但本周我开始考虑将包装作为应用程序模块更合适,例如:

com.example.android
.car
  CarActivity
  CarListFragment
  CarDetailFragment
  CarListAdapter
  ...
.route
  RouteActivity
  RouteListFragment
  RouteDetailFragment
  RouteListAdapter
  ...
.utils
.services
etc.

我还没有想过两次所有人应该在"模块" (例如数据实体)。但为什么我要考虑这种变化呢?因为在中型或大型项目中,一个软件包中包含非常多的活动/片段/等等 - 这让我感到困惑 - 我特别感谢从其他开发者那里获得的大型项目。

还有一个优点可以分为模块包 - java包 - 私有方法可见性。

我还没有决定是使用这个还是那个变种,但我认为对于较小的项目并不关心,对于中型或大型项目,它可能是更好的选项包作为模块。

答案 1 :(得分:2)

我喜欢在我的Android项目中为每个类分别创建文件,唯一的例外是AsyncTasks。拥有这么多java文件意味着你必须拥有比基础包更多的包。我最终为每种类型的主类提供了一个包。每个类都以其类型命名。

com。示例

活动

包含所有活动。类最后都以Activity命名。这样,您可以在阅读没有完整包名的Java代码时立即知道它是什么。

适配器

包含所有适配器。

认证符

包含与签署用户相关的任何类。我创建一个本地帐户并将所有相关的类放在一起非常方便。

数据

包含与数据管理相关的所有类,如ContentProvider和SQLiteHelper。

data.migrations

包含我的所有SQLite迁移。我为迁移创建了一个类,在这里阅读它,并将它们全部放在这个包中。

片段

包含所有碎片。

助手

包含帮助程序类。帮助程序类是放置在多个位置使用的代码的地方。我有一个DateHelper。大多数方法都是静态的。

接口

包含所有接口。

模型

包含所有本地模型。从HTTP API同步时,我使用Jackson将JSON解析为这些Java对象。我也将Cursor行拉入这些模型中。

偏好

包含自定义首选项的所有类。创建首选项时,我需要自定义PreferenceDialog以及自定义PreferenceCategory。他们住在这里。

同步

包含与同步相关的所有类。我使用SyncAdapter从HTTP API中提取数据。除了SyncAdapter之外,还需要SyncService,因此我创建了一个包。