gpt4 book ai didi

java - AsyncTask 类的 onProgressUpdate() 不起作用

转载 作者:行者123 更新时间:2023-12-01 19:39:02 25 4
gpt4 key购买 nike

我想显示下载图像的进度条并设置自定义颜色我在 onProgressUpdate() 中执行此操作,但它不起作用,它也不会出现在 logcat 中。它还会显示白屏,直到下载完成,如果我在下载过程中按后退按钮,它就会崩溃。

我的代码:

public class DownloadImage extends AsyncTask<String ,Void, Bitmap> {

Bitmap bit;

@Override
protected Bitmap doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
return BitmapFactory.decodeStream(connection.getInputStream());
} catch(Exception e){
Log.i("error download", "doInBackground: "+e.getMessage());
}
return null;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
Log.i("download", "onPostExecute: ");
imageView.setImageBitmap(bitmap);
progressBar.setVisibility(View.GONE);
}

@Override
protected void onProgressUpdate(Void... values) {
Log.i("download", "onProgressUpdate: ");
imageView.setColorFilter(R.color.imagecolor);
}
}

和onCreate()方法:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
imageView = findViewById(R.id.imageView2);
progressBar = findViewById(R.id.progressBar2);
DownloadImage downloadImage = new DownloadImage();
downloadImage.execute("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRaL6woz3RgMF-UXU682S_BYb1ayl5xaVancp0PPvF2HnCDmPsb");

try {
downloadImage.get();
} catch (Exception e){

}
}

最佳答案

I want to show progressbar where image downloaded and set custom color I do it in onProgressUpdate() but it dosent work

您需要从 doInBackground() 调用 publishProgress()。这将触发对 onProgressUpdate() 的调用。您没有这样做,因此 onProgressUpdate() 将不会被调用。

it also shows a white screen until download completed

删除 downloadImage.get(); 调用。这将阻塞主应用程序线程,而使用 AsyncTask(或其更现代的替代品)的目的是不阻塞主应用程序线程。

and if I press back button during the download, it will crash.

如果 Activity/fragment 被破坏,则不应更新 UI。因此,您需要在 onPostExecute() 中确认更新 UI 是否安全(例如,在 Activity 上调用 isDestroyed())。

除此之外,use Logcat to examine the stack trace associated with any crashes .

关于java - AsyncTask 类的 onProgressUpdate() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56049018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com