2

我正在开发一个应用程序,我在其中假装为典型的 CRUD 操作调用 REST 服务。由于我想将请求处理与 UI 线程分开,因此我计划使用 AsyncTask 来完成单独的工作。但是,我的问题是:我应该如何设计我的 AsyncTask(s) 模型?我应该对所有 CRUD 操作使用一个 AsyncTask(这是否可行?),还是使用 4 个 AsyncTask(创建、删除、更新、检索)?

提前致谢

4

3 回答 3

1

我会使用 ContentProvider 而不是使用 AsyncTask。

根据这个线程:

https://groups.google.com/forum/?fromgroups#!topic/android-developers/8M0RTFfO7-M%5B1-25%5D

在 Android 4 AsyncTasks 将是顺序的。

因此,仅出于这个原因,您的解决方案可能不是最佳的。

但是, ContentProvider 对您尝试做的事情更有意义,因为 CRUD 调用背后发生的事情用户并不关心。不过,您可能希望在单独的线程上运行它,因为在 UI 线程上的时间过长是不好的。

于 2012-08-19T00:30:18.093 回答
0

这完全取决于您,也许还取决于您正在使用的 REST 服务。

需要考虑的一些事项:

  1. 服务是否足够通用,可以很容易地用一个来完成所有事情AsyncTask
  2. 如果您使用单个AsyncTask. 我倾向于认为,如果你AsyncTask为每个操作都做一个,它会更容易阅读。(即,CreateTask、UpdateTask...)
  3. 我会通过我的选择(无论是什么)获得我所追求的可重用性吗?

就个人而言,我会创建 4 个不同AsyncTask的 's,以及我可能会放入基类中的任何可重用代码,但同样,对于你来说最适合你的工作真的取决于你。

于 2012-08-19T00:10:40.550 回答
0

就我个人而言,我使用的Loader是兼容库提供的框架。AsyncTaskLoader对于每个 CRUD 操作,我都有一个子类,它工作得非常好!

我想如果您希望避免使用大量类,您可以使用相同的任务(即 create 和 update 在技术上可以适合相同的任务) - 当您将AsyncTaskLoadercreatesetParameters(...)方法子类化时,您可以在创建加载器时调用该方法onCreateLoader()

在您查看Loader 文档后阅读以上内容可能会有所帮助。

于 2012-08-19T04:29:47.783 回答