Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在进行大量计算时,不调用runUnuithRead_Java_Android_Android Arrayadapter - Fatal编程技术网

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.你想消除什么不利条件?代码的行为与预期的完全一致。你能更具体地说明你的要求吗?我已经更新了这个问题。