在Android中,一个好的打包策略是什么

在Android中,一个好的打包策略是什么,android,project,structure,packages,code-organization,Android,Project,Structure,Packages,Code Organization,我已经开发了几个Android应用程序,但我仍然不确定如何将这些类构造成不同的包 例如,假设我们正在构建一个书店应用程序,它包含在 BookListActivity和BookDownloadActivity BookListActivity使用ListView,它需要一个列表适配器。BookDownloadActivity需要BookDownloadAsyncTask 我见过有人这样构造代码: src/com/company/bookapp\ + activi

我已经开发了几个Android应用程序,但我仍然不确定如何将这些类构造成不同的包

例如,假设我们正在构建一个书店应用程序,它包含在 BookListActivity和BookDownloadActivity

BookListActivity使用ListView,它需要一个列表适配器。BookDownloadActivity需要BookDownloadAsyncTask

我见过有人这样构造代码:

src/com/company/bookapp\
                  + activity\
                  |   +-BookListActivity.java
                  |   +-BookDownloadActivity.java  
                  |  
                  + adapter\
                  |    +-BookListAdapter.java
                  |
                  + asynctask\
                       +-BookDownloadAsyncTask.java
这种结构是有意义的,因为我们有一个用于所有活动的包。然而,我认为java包就像文件夹、抽屉一样,放东西的地方。 如果我们这样做,BookListAdapter类及其某些方法需要是公共的。我希望使用java包,而不是像文件系统那样在不同的文件夹中组织文件,而是像某种名称空间一样,充分利用java可见性修饰符的好处,包括包可见性

因此,由于BookListAdaper仅在BookListActivity中使用,我希望它具有包访问级别。BookDownloadAsyncTask也是如此,它只在BookDownloadActivity中使用

当然,在本例中,适配器和AsyncTask非常小,因此我们可以将它们作为嵌套类写入各自的活动中。但是想象一下,活动使用的类更大或不止一个,而且是特定于该活动的

从这个角度来看,我很想做:

src/com/company/bookapp\
                  + list\
                  |   +-BookListActivity.java
                  |   +-BookListAdapter.java  
                  |  
                  + download\
                       +-BookDownloadActivity.java
                       +-BookDownloadAsyncTask.java  
使用这种方法,只有活动对应用程序的其余部分可见,它们使用的类具有包可见性,而应用程序的其余部分不知道它们,我认为这是更封装和更好的方法

然而,这是否意味着我们应该为每项活动制定不同的方案?如果两个活动使用同一个适配器怎么办


我很想知道你们在这方面做了什么,以及其他相关的问题,例如,在哪里放置扩展视图。

您可以从其他包中导入类,因此您可以根据自己的喜好将其拆分。 我总是把我的放在MVC包里


但是,如果您创建了一个protectet类或方法,它只能在相同的包中使用。

投票关闭,对不起,因为我认为这主要是基于观点的,可能会引发评论风暴。就个人而言,我使用的唯一标准是可见性,因此是封装。我将所有其他标准视为个人偏好。模型、视图、控件