线程完成后显示对话框

时间:2011-03-04 11:55:26

标签: android multithreading

完成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();

    }


}

2 个答案:

答案 0 :(得分:1)

This document说明了如何创建对话框。

请注意,您必须在UI线程上执行任何对话框创建代码。

你已经拥有在UI线程上运行某些东西的代码,只需在循环外执行,但内部有对话框创建代码。

答案 1 :(得分:-1)

您应该使用AsyncTask:子类AsyncTask,覆盖doInBackground()以在另一个线程上执行耗时的操作,然后覆盖onPostExecute()以显示您的对话框。

请注意,您无法从非UI(后台)线程更改UI元素。 AsyncTask为您处理:它在新线程上调用doInBackground(),然后在后台任务完成后立即在UI线程上调用onPostExecute()