Bạn sẽ không thực sự nhận được bất kỳ lợi ích nào khi sử dụng lại số HttpURLConnection
.
Một điều rất có lợi cho ứng dụng của bạn là nếu bạn dành một chút thời gian xem xét Async Tasks, điều này sẽ cho phép bạn khai thác sức mạnh của các yêu cầu HTTP đa luồng với các cuộc gọi lại tới mã chính của bạn.
Xem: http://www.vogella.com/articles/AndroidPerformance/article.html để biết ví dụ về cách sử dụng Công việc đồng bộ. Tuy nhiên,
Điểm khởi đầu tốt là tất nhiên là Blog dành cho nhà phát triển Android, nơi chúng có ví dụ để tải xuống hình ảnh từ máy chủ một cách không đồng bộ. Với một số điều chỉnh, bạn có thể yêu cầu ứng dụng gửi nhiều yêu cầu không đồng bộ cùng một lúc để có hiệu suất tốt.
Các bài viết Google có thể được tìm thấy tại địa chỉ: http://android-developers.blogspot.co.uk/2009/05/painless-threading.html
Diện tích chìa khóa để nhìn vào là:
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);
}
}
Phương pháp loadImageFromNetwork
là nơi tải diễn ra, và sẽ hoàn toàn không đồng bộ xa giao diện người dùng chính của bạn.
Như một ví dụ cơ bản, bạn có thể sửa đổi ứng dụng của bạn để gọi đây là như vậy:
for(int i = 0; i < 100; i++){
new DownloadImageTask().execute("http://www.android.com/image" + i + ".jpg");
}
Dù cho việc tối ưu, tôi sẽ không ném 100 yêu cầu ra cùng một lúc, có thể tạo ra một hệ thống hàng đợi Threaded mà sẽ cho phép có thể 4 hoặc 5 kết nối đồng thời và sau đó giữ phần còn lại đến khi một kết thúc khác bằng cách duy trì một số yêu cầu để đọc.
Nguồn
2012-11-23 10:49:52
Nó kết nối tổng hợp phía sau hậu trường. – EJP