Java 在进行大量计算时,不调用runUnuithRead
我有这样的代码:Java 在进行大量计算时,不调用runUnuithRead,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,我有这样的代码: new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 100; i++) { myClass somedata = myHugeAndVeryBusyFunction(); Log.d(TAG,"PING"); f
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();
new线程(new Runnable()){
@凌驾
公开募捐{
对于(int i=0;i<100;i++){
myClass somedata=MyHugeAnderyBusyFunction();
Log.d(标记为“PING”);
final testCallback=“进度为”+i;
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
日志d(标记为“PONG”);
setText(testCallback);
mAdapter.notifyDataSetChanged();
}
});
}
}
}).start();
只有在循环完全执行后才会调用runOnUiThread
内部的Runnable
。
因此,只有在所有计算之后才调用runnable。是否有可能消除这一缺点?您可以使用异步任务来更新UI。您可以从MyHugeAnderyBusyFunction内部定期调用ProgressUpdate。这将确保UI定期更新,而不是在最后更新。但是如果MyHugeAnderyBusyFunction是一个巨大的整体,那么它可能有点难。您将任由调度程序摆布。如果没有任何UI操作,请在单独的线程中进行大量计算。您的意思是什么?我有UI回调操作。为了更简单的阅读,我刚刚删除了这里。@Vyacheslav:您能在代码中详细说明您的注释吗?代码中写着“//this runnable is call after I==99”??我对你在那里使用的条件有疑问1.你想消除什么不利条件?代码的行为与预期的完全一致。你能更具体地说明你的要求吗?我已经更新了这个问题。