java - 在 Android 中编写许多 HTTP 请求的良好设计模式

标签 java android http design-patterns

在我的应用程序中,我有很多 GET、POST、PUT 请求。现在,我有一个单例类来保存我下载的数据,并且有许多扩展 AsyncTask 的内部类。 在我的单例类中,我也有一些这样的接口(interface):

/**
* Handlers for notifying listeners when data is downloaded
* 
*/
public interface OnQuestionsLoadedListener {

    public void onDataLoadComplete();

    public void onDataLoadingError();       
}

这种模式有什么问题吗(许多扩展 AsyncTask 的内部类)? 每次 HTTP 调用可能只有 1 个内部类(1 个用于 GET,1 个用于 POST,...)是否可以更有效地完成它?如果是这样,如何决定在例如之后做什么? GET 请求?

最佳答案

总的来说,您应该在执行网络请求时远离 AsyncTasks。

您的 AsyncTasks 链接到您的 Activity。这意味着,如果您的 Activity 停止,您的 AsyncTask 也会停止。 这不是获取数据以显示在该 Activity 中的最大问题,因为您不会关心获取是否已停止。但是当你想将一些保存的数据发送到服务器,而你的用户在发送所有内容之前按下“后退”或类似的东西时,数据可能会丢失并且不会发送。

您想要的是一个无论您的 Activity 发生什么情况都会保持运行的服务。

我建议您查看 RoboSpice .即使您决定不使用它,阅读它的作用和原因也会让您深入了解不对网络请求使用 AsyncTasks 的一长串原因以及为什么最好使用服务。 如果您使用它,那么您关于高效网络请求的其余问题也将过时,因为他们会以尽可能最好的方式为您处理。

关于java - 在 Android 中编写许多 HTTP 请求的良好设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570395/

相关文章:

html - 从 formbuilder 中获取一个 id 以删除 Angular 6 中的一行

java - 无法对 PLSQL 语句执行 fetch : next

java - JAXB 注释 RootElement

java - Android facebook webdialog 网络错误 (netstack : lib_mgr error)

Android 应用程序需要 Google Play 服务更新 - 打开按钮而不是更新

android - PagerTabStrip 标题背景色

java - 浏览器不缓存资源( header 设置)

python - 使用自定义错误处理程序时如何从中止命令访问错误消息

java - Intellij 显示断点对于我导入的 jar 文件无效,有人知道如何使其有效吗?

java - 二进制 XML 文件行 #7 : Error inflating class android. support.v4.view.ViewPager