Android最佳实践AsyncTask

前端之家收集整理的这篇文章主要介绍了Android最佳实践AsyncTask前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我是Android开发的新手.抱歉愚蠢的问题.

我需要检查几个http资源(resource1,resource2 ……等)并检查它们是否已启动.如果资源1不可用,那么应用程序需要检查互联网是否已启动(可能ping谷歌?)然后如果连接实际正在运行,则需要检查所有其他资源并将有关内容的信息放到通知抽屉中.

使用AsyncTask和HttpURLConnection为一个资源做这件事非常简单,但我不太明白如何使用异步调用来执行逻辑(resource1 – > google – > resource2 – >在一个地方收集信息 – >显示通知).它的最佳实践是什么?

最佳答案
@ FD_的答案是有效的,但我认为有一种更好的方法可以避免异步任务的恐怖.为了记录,我提出了FD_的答案,因为它是有效的我只是指出了另一种方式.

所以我会做一个结果对象.这可用于解决您尝试与各种服务进行通信时发生的情况.你可以有类似的东西

public class ResponseResult {

    public String displayName; // so we know what this was all about e.g. "google request"
    public boolean success;
    public String message;
    public int httpStatusCode; //useful to help workout what went wrong e.g. 500,302 etc.

}

然后,您可以使用比AsyncTask更好的Android Volley Library,因为它在另一个线程中使用RequestQueue,它可以更好地在Activity生命周期中存活.它还可以使您的代码更容易阅读/管理.

你可以在这里阅读一些关于Volley Vs AsyncTask的内容Volley and AsyncTask

一旦您发出所有请求并将结果放入数组或列表中,您就可以迭代它们以打印结果.

你可以从这里获得Volley https://android.googlesource.com/platform/frameworks/volley

附加信息

您可能还会发现Robospice的这个inforgraphic非常有用,因为它有助于解释AsyncTask的缺点.

https://raw.github.com/octo-online/robospice/master/gfx/RoboSpice-InfoGraphics.png

另一个实现

您可能会发现此实现不合适,但它有一定意义,并且会生成更少的代码.

您可以编写一些服务器端代码来为您执行检查并返回结果对象的XML / JSON数组.这具有对具有更可靠连接的硬连线服务器的单个请求的优点,其可能在更短的时间空间内进行请求.

您的Android设备只会向服务器发出一个请求,然后按照上面的其他方法处理结果数组.

主要缺点是这将引入另一组代码和附加硬件.

猜你在找的Android相关文章