我想在密集型任务期间更新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,直到方法执行完毕。
答案 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();
}
});