我是Android开发的新手.抱歉愚蠢的问题.
我需要检查几个http资源(resource1,resource2 ……等)并检查它们是否已启动.如果资源1不可用,那么应用程序需要检查互联网是否已启动(可能ping谷歌?)然后如果连接实际正在运行,则需要检查所有其他资源并将有关内容的信息放到通知抽屉中.
使用AsyncTask和HttpURLConnection为一个资源做这件事非常简单,但我不太明白如何使用异步调用来执行逻辑(resource1 – > google – > resource2 – >在一个地方收集信息 – >显示通知).它的最佳实践是什么?
所以我会做一个结果对象.这可用于解决您尝试与各种服务进行通信时发生的情况.你可以有类似的东西
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设备只会向服务器发出一个请求,然后按照上面的其他方法处理结果数组.
主要缺点是这将引入另一组代码和附加硬件.