Android异步任务等待Status.FINISHED
我正在用AsyncTask从url下载一个图像, 我想在图像下载后立即在对话框中显示此图像。 我正在尝试这段代码:它没有等到完成,这段代码正在返回运行Android异步任务等待Status.FINISHED,android,android-asynctask,dialog,Android,Android Asynctask,Dialog,我正在用AsyncTask从url下载一个图像, 我想在图像下载后立即在对话框中显示此图像。 我正在尝试这段代码:它没有等到完成,这段代码正在返回运行 if(dt.getStatus() == AsyncTask.Status.FINISHED) { dialog.show(); } 您需要设置一个事件侦听器。只要设置一个if-then语句,就意味着它在找到代码时就会被执行。事件侦听器将等待事件发生(在本例中为Status.FINISHED),然后在侦听器内执行代码
if(dt.getStatus() == AsyncTask.Status.FINISHED) {
dialog.show();
}
您需要设置一个事件侦听器。只要设置一个if-then语句,就意味着它在找到代码时就会被执行。事件侦听器将等待事件发生(在本例中为Status.FINISHED),然后在侦听器内执行代码 与肯·沃尔夫合作有助于
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
private Context mcontec;
public DownloadImageTask(ImageView bmImage, Context mContextr) {
this.bmImage = bmImage;
mcontec=mContextr;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
dialog(result, mcontec);
}
public void dialog(Bitmap resim, final Context ctx){
final Dialog dialog = new Dialog(ctx, R.style.CustomDialogTheme);
dialog.setContentView(R.layout.perdereklam);
ImageView reklam = (ImageView) dialog.findViewById(R.id.reklampng);
reklam.setImageBitmap(resim);
reklam.setOnTouchListener(new OnTouchListener() {
// fill your stuff...
}
dialog.show();
}
只需显示对话框
onPostExecute
您可以显示一个示例吗这里是一个显示onPostExecute
中对话框的示例:下面是一个关于如何设置自定义事件侦听器的很好示例:
public static void showRateDialog(final Context mContextr) {
final Dialog dialog = new Dialog(mContextr, R.style.CustomDialogTheme);
ImageView reklam = (ImageView) dialog.findViewById(R.id.reklampng);
final DownloadImageTask dt = new DownloadImageTask(reklam, mContextr);
dt.execute("your url");
}