gpt4 book ai didi

android - 带有异步任务的简单进度条

转载 作者:行者123 更新时间:2023-11-29 02:03:00 31 4
gpt4 key购买 nike

我想通过简单的任务向我的代码中添加一个简单的流程栏。我尝试了一些示例,但看不到该进程栏在工作。我在这里发布我的代码希望你能帮助我。当我的一些代码完成时,我想停止进程栏,比如用一些标志来停止散文栏。请发布一些代码。

非常感谢!

这里是我的代码:

private class loading extends AsyncTask<Void, Void, Integer> {

Context context;
ProgressBar progressBar;
static final long waitTime = 1 * 4000L;
long preTime;
int progress;

public loading(Context context) {

this.context = context;
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
progressBar.setProgress(0);

}

protected void onPostExecute(Integer result) {
Intent intent = new Intent(this.context, first.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
finish();
return;
}

protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
preTime = System.currentTimeMillis();

}

protected void onProgressUpdate(Integer... values) {
progressBar.setProgress(values[0]);

}

@Override
synchronized protected Integer doInBackground(Void... arg0) {
int waited = 0;
while (waited < 3000) {
try {


// SystemClock.sleep(100);
this.wait(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
waited += 100;
}
return null;



}
}

最佳答案

你的 doInBackground方法需要调用 publishProgress()以便您更新 UI。

waited += 100;行之后添加:

int progress = Math.round((float)waited / 3000 * 100);
publishProgress(progress);

还有AsyncTask的签名如果您打算使用整数来反射(reflect)您的进度,那是错误的。通用参数是 AsyncTask<Params, Progress, Result> ,因此在您的情况下,您不接受任何参数,也不从 doInBackground 返回任何有意义的值,但是,您确实想要返回一个 Integer来表示进度。因此,更改您的类声明以匹配:

private class loading extends AsyncTask<Void, Integer, Integer>
{
//your implementation
}

关于android - 带有异步任务的简单进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581235/

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