在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.netorg.apache.http库进行网络访问,则取决于您。我发现在java.net尝试发出a

GET和读取结果时,这些库使用起来很安静。这些org.apache.http库将使您几乎可以做任何您想做的事情HTTP,但是它们使用起来可能会有点困难,我发现对于简单的GET请求,它们的性能不佳(在Android上)。

以上是 在Android中进行异步HTTP请求是否有公认的最佳实践? 的全部内容, 来源链接: utcz.com/qa/402158.html

回到顶部