Tôi biết rằng lần đầu tiên bạn thực hiện điều này là ... tại sao bạn lại sử dụng AsyncTask trên thế giới. Vì vậy, đây là vấn đề của tôi tôi đang làm việc trên một số ứng dụng Android (API 7 cho android 2.1 hoặc cao hơn), và tôi đang thử nghiệm trên giả lập và mọi thứ đều tốt, vì vậy sau đó tôi thử nghiệm trên HTC Sensation và nó nói NetworkOnMainThreadExeption!Android: cách đợi AsyncTask kết thúc trong MainThread?
Tôi đã tải xuống một số hình ảnh và sau đó vẽ trên bản đồ.
Vì vậy, để giải quyết vấn đề này mỗi (kết nối internet) trong trường hợp này tải xuống hình ảnh tôi phải đặt trên AsyncTask để hoạt động.
Vì vậy, tôi cần một phương pháp làm thế nào để biết khi nào tất cả các hình ảnh được thực hiện vì vậy tôi có thể bắt đầu vẽ ..
Tôi đã cố gắng rất nhiều và kết quả không có tôi không có ý tưởng. Tôi đã có một giải pháp với handler nhưng nếu chạy trên net chậm hơn tôi nhận được nullpointer (vì những hình ảnh không được tải về).
Vì vậy, hãy giúp tôi.
EDIT:
đây là ý tưởng:
Bitmap bubbleIcon ;
onCreate(){
...
// i am making call for Async
new ImgDown().execute(url);
//and then i calling functions and classes to draw with that picture bubbleIcon !
DrawOnMap(bubbleIcon);
}
//THIS IS ASYNC AND FOR EX. SUPPOSE I NEED TO DOWNLOAD THE PIC FIRST
class ImgDown extends AsyncTask<String, Void, Bitmap> {
private String url;
public ImgDown() {
}
@Override
protected Bitmap doInBackground(String... params) {
url = params[0];
try {
return getBitmapFromURL(url);
} catch (Exception err) {
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
bubbleIcon = result;
bubbleIcon = Bitmap
.createScaledBitmap(bubbleIcon, 70, 70, true);
}
public Bitmap getBitmapFromURL(String src) {
try {
Log.e("src", src);
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
// /tuka decode na slika vo pomalecuk kvalitet!
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
Bitmap myBitmap = BitmapFactory
.decodeStream(new FlushedInputStream(input));
Log.e("Bitmap", "returned");
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
Log.e("getBitmapFromURL", e.getMessage());
return null;
}
}
class FlushedInputStream extends FilterInputStream {
public FlushedInputStream(InputStream inputStream) {
super(inputStream);
}
public long skip(long n) throws IOException {
long totalBytesSkipped = 0L;
while (totalBytesSkipped < n) {
long bytesSkipped = in.skip(n - totalBytesSkipped);
if (bytesSkipped == 0L) {
int byteValue = read();
if (byteValue < 0) {
break; // we reached EOF
} else {
bytesSkipped = 1; // we read one byte
}
}
totalBytesSkipped += bytesSkipped;
}
return totalBytesSkipped;
}
}
}
tôi hy vọng bây giờ là rõ ràng hơn.
Hãy dán mã nguồn có liên quan. Nó không thể giúp đỡ nếu bạn chỉ cung cấp mô tả không chính thức. –
tôi đã chỉnh sửa bài đăng. xin vui lòng xem – user1730007
Sử dụng hộp thoại tiến trình – WillingLearner