良好的设计模式编码的Android的HTTP请求(Good design patterns for

2019-08-17 21:04发布

在我的应用程序,我有很多的GET,POST,PUT请求。 现在,我有对我的下载数据,并具有扩展的AsyncTask许多内部类一个单独的类。 在我的单身类,我有这样也就几个接口:

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

    public void onDataLoadComplete();

    public void onDataLoadingError();       
}

有什么不对这种模式(扩展的AsyncTask许多内部类)? 难道是与每一个HTTP调用(1 GET,1 POST,...)也许只是1内部类更有效地完成? 如果是这样,如何决定如GET请求之后做什么?

Answer 1:

作为一个整体,你应该同时预成型的网络请求从AsyncTasks脱身。

你AsyncTasks链接到你的活动。 这意味着,如果你的活动停止后,您的AsyncTask停止。 读取数据在活动来展示,因为你不会在意的是,取已经停止时,这还不是最大的问题。 但是,当你要发送一些数据保存到服务器,用户按下“返回”或类似的东西被发送之前的一切,数据可能丢失,而不是发送。

你想拥有取而代之的,是这将保证不管发生了什么你的活动运行的服务。

我建议你看一看到RoboSpice 。 即使你不打算使用它,阅读它做什么和为什么它会给你很长的原因,不使用AsyncTasks网络请求列表,为什么最好使用服务的一个很好的洞察力。 如果你使用这个,你的问题的其余约高效网络请求是过时过,因为他们会为您处理它的最好的方式。



Answer 2:

没有错,很多异步类。

什么IDO是有一个网络层,服务类。 发送意图与resultreceiver对象的服务类作为意图的一部分。 然后在该服务使异步任务的HTTP请求,并通过结果接收对象发回的结果。

一个好的设计是抽象从网络访问UI(活动或片段)。



Answer 3:

在最近开发的程序,我遵循了类似的计划,但在另外实施了WebRequest类做实际的GET,POST,PUT等等。

我现在已经是一个“连接器”类,它有一大堆中的AsyncTask子类。 在我的实现,但是,我让他们接受,每个子类的那些的经过HTTP结果一个回调对象。

我认为这是一个有效的,如果可能不是理想的方式。

我想象可能是一个改进是,如果我有的AsyncTask只是一个子类,而我会通过请求主体(也就是现在建立中的那些不同的任务),请求URL和方法以及回调(这是在我看来,一个相当不错的办法得到的结果)。



文章来源: Good design patterns for coding many HTTP requests in Android