完成Thread后我想要显示对话框。 在线程中我将TextView的值更改为0到100 ... 当TextView Value达到100时,我想显示对话框..
我为它做了什么。 提前致谢... 代码段:
final Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
synchronized (this)
{
try
{
for(int i=0 ; i<speed; i++)
{
final int value=i+1;
wait(3000/speed);
Test.this.runOnUiThread(new Runnable() {@Override public void run()
{
accText.setText(String.valueOf(value));
}});
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
thread.start();
这是asyntask代码片段......
class setTextBackgroundTask extends AsyncTask<String , Integer, Void>
{
@Override
protected void onPreExecute()
{
}
@Override
protected Void doInBackground(String... params)
{
Thread th = new Thread();
int value;
for(int i=0 ; i<speed; i++)
{
value=i+1;
publishProgress(value);
try {
th.sleep(3000/speed);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values)
{
accText.setText(String.valueOf(values[0]));
System.out.println("Value=="+values[0]);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Void result)
{
showShareDialog();
}
}
答案 0 :(得分:1)
答案 1 :(得分:-1)
您应该使用AsyncTask:子类AsyncTask
,覆盖doInBackground()
以在另一个线程上执行耗时的操作,然后覆盖onPostExecute()
以显示您的对话框。
请注意,您无法从非UI(后台)线程更改UI元素。 AsyncTask
为您处理:它在新线程上调用doInBackground()
,然后在后台任务完成后立即在UI线程上调用onPostExecute()
。