Android - 在密集型任务期间更新UI?

时间:2014-08-20 09:59:38

标签: java android animation

我想在密集型任务期间更新UI。我有一个单独的线程,其中密集方法运行但我无法更新UI ...

这是我的代码的结构:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        updateUI();
        Thread t = new Thread(){
            @Override
            public void run(){
                runIntensiveMethod();
            }
        }
        t.start();
    }
});

如果我评论runIntensiveMethod();,动画运行完全正常。但是,似乎UI队列在方法运行之前会延迟。

如何在动画运行时发布动画并运行方法? 我试过的所有内容都会暂停UI,直到方法执行完毕。

3 个答案:

答案 0 :(得分:1)

您应该为该线程设置优先级:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);

同时检查here

答案 1 :(得分:0)

如果要从runOnUiThread

进行刷新,只需致电runIntensiveMethod()即可
runOnUiThread(new Runnable()
{
  @Override
  public void run()
  {
    updateUI();
  }
});

答案 2 :(得分:0)

将您的代码更改为此,这应该可以。

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            Thread t = new Thread(){
                @Override
                public void run(){
                    runIntensiveMethod();
                    runOnUiThread(new Runnable() {
                    public void run() {

                       updateUI();
                    }

                }
            }
            t.start();
        }
    });