我正在开发一个应用程序,我在其中假装为典型的 CRUD 操作调用 REST 服务。由于我想将请求处理与 UI 线程分开,因此我计划使用 AsyncTask 来完成单独的工作。但是,我的问题是:我应该如何设计我的 AsyncTask(s) 模型?我应该对所有 CRUD 操作使用一个 AsyncTask(这是否可行?),还是使用 4 个 AsyncTask(创建、删除、更新、检索)?
提前致谢
我正在开发一个应用程序,我在其中假装为典型的 CRUD 操作调用 REST 服务。由于我想将请求处理与 UI 线程分开,因此我计划使用 AsyncTask 来完成单独的工作。但是,我的问题是:我应该如何设计我的 AsyncTask(s) 模型?我应该对所有 CRUD 操作使用一个 AsyncTask(这是否可行?),还是使用 4 个 AsyncTask(创建、删除、更新、检索)?
提前致谢
我会使用 ContentProvider 而不是使用 AsyncTask。
根据这个线程:
https://groups.google.com/forum/?fromgroups#!topic/android-developers/8M0RTFfO7-M%5B1-25%5D
在 Android 4 AsyncTasks 将是顺序的。
因此,仅出于这个原因,您的解决方案可能不是最佳的。
但是, ContentProvider 对您尝试做的事情更有意义,因为 CRUD 调用背后发生的事情用户并不关心。不过,您可能希望在单独的线程上运行它,因为在 UI 线程上的时间过长是不好的。
这完全取决于您,也许还取决于您正在使用的 REST 服务。
需要考虑的一些事项:
AsyncTask
?AsyncTask
. 我倾向于认为,如果你AsyncTask
为每个操作都做一个,它会更容易阅读。(即,CreateTask、UpdateTask...)就个人而言,我会创建 4 个不同AsyncTask
的 's,以及我可能会放入基类中的任何可重用代码,但同样,对于你来说最适合你的工作真的取决于你。
就我个人而言,我使用的Loader
是兼容库提供的框架。AsyncTaskLoader
对于每个 CRUD 操作,我都有一个子类,它工作得非常好!
我想如果您希望避免使用大量类,您可以使用相同的任务(即 create 和 update 在技术上可以适合相同的任务) - 当您将AsyncTaskLoader
createsetParameters(...)
方法子类化时,您可以在创建加载器时调用该方法onCreateLoader()
。
在您查看Loader 文档后阅读以上内容可能会有所帮助。