Android:runOnUiThread混合输出

剑尖

我使用Process运行本机二进制文件。那不是问题,我可以正常获取InputStream并通过Scanner对其进行解析。如果我在while (scanner.hasNextLine())里面System.out.println(scanner.nextLine()),一切都很好。如果我在System.out.println(scanner.nextLine())内部运行runOnUiThread(),那么它会混淆我的输出,我什么也得不到,但是我得到的是同一行的20倍(每次运行都不相同)。

在这里,我完整的代码:

processScanner = new Scanner(process.getInputStream());
while(processScanner.hasNextLine()) {
  line = processScanner.nextLine();
  System.out.println(line);
  runOnUiThread(new Runnable() {
      @Override
      public void run() {
          cuberiteSTDOUT.writeString(line);
      }
  });
}

创建正常的输出。


processScanner = new Scanner(process.getInputStream());
while(processScanner.hasNextLine()) {
  line = processScanner.nextLine();
  runOnUiThread(new Runnable() {
      @Override
      public void run() {
          System.out.println(line);
          cuberiteSTDOUT.writeString(line);
      }
  });
}

产生疯狂的输出,例如

02-28 12:44:18.433 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.435 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.441 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.442 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.443 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.447 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.449 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.450 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.450 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.451 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.452 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.453 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.454 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}
02-28 12:44:18.456 30908-30908/org.cuberite.android I/System.out: Log: [3d7cb4f2|11:44:18] Created arrow 182 with speed {0.00, 0.00, 0.00} and rot {0.00, 0.00}

(只是重复了一些行,但其他的行被省略了)

提前致谢

亨宁·路德

您的行在另一个线程中被操纵,而不是被打印。将行更改为:

final String line = processScanner.nextLine();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何使用Kotlin将runOnUiThread追加到Android

来自分类Dev

“ runOnUiThread”上的Android线程/ AsyncTask,ExceptionInInitializerError和RuntimeException

来自分类Dev

如何在Xamarin Android中使用RunOnUIThread()

来自分类Dev

Android runOnUiThread导致内存泄漏

来自分类Dev

Android runOnUiThread执行顺序

来自分类Dev

Android runOnUiThread()不更新TextView

来自分类Dev

MainLooper与runOnUiThread

来自分类Dev

bash:防止重定向函数的错误与输出混合

来自分类Dev

按返回按钮时,Android runOnUiThread崩溃

来自分类Dev

c#控制台输入与输出混合

来自分类Dev

关闭runOnUiThread

来自分类Dev

管道/混合线路输入到PulseAudio中的输出

来自分类Dev

如何使用Kotlin在runOnUiThread中播放追加到Android

来自分类Dev

管道/混合线路输入到PulseAudio中的输出

来自分类Dev

Android runOnUiThread线程安全

来自分类Dev

逐行处理命令输出,不混合标准输入

来自分类Dev

Android runOnUiThread导致内存泄漏

来自分类Dev

如何在Xamarin Android中使用RunOnUIThread()

来自分类Dev

Android runOnUiThread()不更新TextView

来自分类Dev

Android DataAdapter混合了数据值

来自分类Dev

RunOnUiThread加载失败,需要对象引用(android)

来自分类Dev

SQL Server输出参数返回混合结果

来自分类Dev

android ListLayout混合类型行

来自分类Dev

简单的外壳。混合管道和输出

来自分类Dev

Android runOnUiThread不异步

来自分类Dev

Xamarin Android RunOnUiThread()在新的OnCreate()调用后无法正常工作

来自分类Dev

Android Asynctask 和 runOnUiThread

来自分类Dev

runOnUiThread 在 Android 中不起作用

来自分类Dev

Android runOnUiThread() 线程波动

Related 相关文章

热门标签

归档