Android的 - 在密集的任务更新UI?(Android - updating UI durin

2019-09-29 16:19发布

我想要一个密集的任务过程中更新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。

Answer 1:

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

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

还要检查在这里



Answer 2:

只要打电话runOnUiThread当你想从你的刷新runIntensiveMethod()

runOnUiThread(new Runnable()
{
  @Override
  public void run()
  {
    updateUI();
  }
});


Answer 3:

更改你的代码这一点,这应该工作。

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();
        }
    });


文章来源: Android - updating UI during intensive task?