在Android中进行异步HTTP请求是否有公认的最佳实践?
我看过很多例子,它们似乎都以不同的方式解决了这个问题。基本上,我只是想要最简单的方法来发出不会锁定主线程并且可以取消的请求。
这也无济于事,我们至少有2个HTTP库可供选择,它们分别是java.net。(例如HttpURLConnection)和org.apache.http。。
最佳做法是什么?
回答:
Android 1.5
SDK引入了一个新类AsyncTask,该类旨在使在后台线程上运行的任务并使结果与UI线程的通信更加简单。Android开发者博客中给出的示例给出了有关如何使用它的基本思想:
public void onClick(View v) { new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
doInBackgroundThread
在单独的线程(由线程池管理ExecutorService
)上调用该方法,并将结果传递给onPostExecute
在UI线程上运行的方法。你可以叫cancel(boolean
mayInterruptIfRunning)上你的AsyncTask
子类来取消正在运行的任务。
至于使用java.net
或org.apache.http
库进行网络访问,则取决于您。我发现在java.net
尝试发出a
GET
和读取结果时,这些库使用起来很安静。这些org.apache.http
库将使您几乎可以做任何您想做的事情HTTP
,但是它们使用起来可能会有点困难,我发现对于简单的GET
请求,它们的性能不佳(在Android上)。
以上是 在Android中进行异步HTTP请求是否有公认的最佳实践? 的全部内容, 来源链接: utcz.com/qa/402158.html