gpt4 book ai didi

android - ProgressBar 未从 AsyncTask 更新

转载 作者:太空狗 更新时间:2023-10-29 15:13:34 24 4
gpt4 key购买 nike

我正在使用 ProgressBar 来尝试显示下载和保存文件的进度。 ProgressBar 出现,但保持在 0,直到它在任务完成时关闭。我尝试了不同的方法,但它就是不会更新。代码有问题吗?

class downloadData extends AsyncTask<Void, Integer, Void>
{

@Override
protected void onPreExecute()
{
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params)
{
int count;
try
{

URL url = new URL("http://google.com");
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
InputStream is = url.openStream();
File testDirectory = new File(MainActivity.this.getFilesDir(), "downloadedData.txt");
if (!testDirectory.exists())
{
testDirectory.mkdir();
}
FileOutputStream fos = new FileOutputStream(testDirectory+"/downloadedData.txt");
byte data[] = new byte[1024];
long total = 0;
while ((count = is.read(data)) != -1)
{
total += count;

int neki = (int)(((double)total/lenghtOfFile)*100);
this.publishProgress(neki);

fos.write(data, 0, count);
}
is.close();
fos.close();
}
catch (Exception e)
{
Log.e("ERROR DOWNLOADING","Unable to download" + e.getMessage());
}

return null;
}

@Override
protected void onProgressUpdate(Integer... values)
{
super.publishProgress(values);
progressDialog.setProgress(values[0]);

}

@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
progressDialog.dismiss();
}
}

onCreate

    progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(true);
progressDialog.setMax(100);
progressDialog.setMessage("Downloading Data");

点击按钮开始下载:progressDialog.show();

最佳答案

尝试调试计算进度的地方。这可能是一个转换问题,您可以尝试分两步进行,以避免在除法后得到 0。但是你应该再次创建一个具有这个进度值的变量,在那里放置一个断点并查看转换问题!

关于android - ProgressBar 未从 AsyncTask 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689938/

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