我的代码是这样的:
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
myClass somedata = myHugeAndVeryBusyFunction();
Log.d(TAG,"PING");
final testCallback = "progress is " + i;
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG,"PONG");
textview.setText(testCallback);
mAdapter.notifyDataSetChanged();
}
});
}
}
}).start();
仅在完全执行循环后调用Runnable
内的runOnUiThread
。
因此,只有在所有计算之后才会调用runnable。是否有可能摆脱这种劣势?
答案 0 :(得分:0)
您可以使用AsyncTask更新UI。您可以定期从myHugeAndVeryBusyFunction内部调用onProgressUpdate。这将确保UI定期更新,而不是最后更新。但如果myHugeAndVeryBusyFunction是一个巨大的巨石,那么它可能有点难。你将受到调度程序的支配。