gpt4 book ai didi

android - AsyncTask 的行为

转载 作者:行者123 更新时间:2023-11-29 16:14:51 28 4
gpt4 key购买 nike

我正在实现 AsyncTask 以理解概念。该代码正在运行,但不是我想要的方式。我已经查看了文档,但无法确定我做错了什么。

代码:

private class NewThread extends AsyncTask<Integer, Integer , String>
{

@Override
protected String doInBackground(Integer... params) {
Log.d(TAG,"inside doInBackground");
for (int i=0;i<params.length;i++)
{
try {
publishProgress(i);
Thread.sleep(6000);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return "Finished";
}

@Override
protected void onPostExecute(String result) {

super.onPostExecute(result);
Toast.makeText(getBaseContext(), result, Toast.LENGTH_SHORT).show();
Log.d(TAG,"inside onPostExecute");
}

@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
Toast.makeText(getBaseContext(), "Done " + values[0], Toast.LENGTH_SHORT).show();
Log.d(TAG,"inside onProgressUpdate");
}

我只看到 Done 0Finished。我期待的是 Done0、Finished、Done1、Finished、Done2。完成....或 Done0 Done1 Done2 ....完成。

我应该在代码中更改什么才能做到这一点?有可能吗?

我正在使用按钮调用 AsyncTask。

public void onClick(View v) {
// TODO Auto-generated method stub
new NewThread().execute(4);


}

谢谢

最佳答案

用于启动 AsyncTask 的代码启动 1(一)个实例,将 4 作为参数传递。因此,param.length() 为 1(一),您只会得到一个输出。

试试这个:

new NewThread().execute(1,2,3,4);

或者如果你想看到多个线程同时工作,也许是这样:

new NewThread().execute(1);
new NewThread().execute(2);
new NewThread().execute(3);

关于android - AsyncTask 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310804/

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