在我的应用程序中,我有很多 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/