Java Android通过EventBus(greenbot)处理可执行文件的实时输出
要运行可执行文件并获得实时输出,我使用以下代码(使用Java Android通过EventBus(greenbot)处理可执行文件的实时输出,java,android,executable,android-intentservice,greenrobot-eventbus,Java,Android,Executable,Android Intentservice,Greenrobot Eventbus,要运行可执行文件并获得实时输出,我使用以下代码(使用String[]command=newstring[]{”/a.out“};): 该命令应在服务内执行: public class Service extends IntentService { ... @Override protected void onHandleIntent(Intent intent) { String[] command = new String[]{"/a.out"};
String[]command=newstring[]{”/a.out“};
):
该命令应在服务内执行:
public class Service extends IntentService {
...
@Override
protected void onHandleIntent(Intent intent) {
String[] command = new String[]{"/a.out"};
Class.execute(command);
}
}
但我只得到一行作为输出,没有更多,但它应该是数百个。我已经通过替换EventBus.getDefault().post(newmessageevent(line+“\n”))在我的计算机上尝试了它代码>带有系统输出打印项次(行)代码>并且它工作得很好
其他信息:订阅服务器通过以下方式处理EventBus:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
tv.append(event.getMessage());
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
电视是一个文本视图:TextView电视=(TextView)findViewById(R.id.TextView)代码>
用一种简单的方法对该结构进行了测试,如下所示。它更新了TextView,并向TextView传递了多行内容。所以我想这一定是我的执行方法里面的东西
public static void test() {
for(int i = 0; i<500000; i++)
EventBus.getDefault().post(new MessageEvent(i+"\n"));
}
也只有一行
用另一个可执行文件测试了它,现在它工作得很好,知道为什么它现在工作吗?它只通过一行吗?它看起来像是通过执行以下操作将所有文本追加到一行->tv.append(event.getMessage())代码>
在onMessageEvent()
方法中,尝试System.out.println(event.getMessage())
断言问题是否真的来自EventBus。很抱歉,我忘了添加什么是电视,它是文本视图(我还将信息添加到问题中)。我不认为它是EventBus,因为一个虚拟函数(只是一个简单的for循环)成功了(更多信息有待商榷)。但是我会尽快尝试一下。尝试过了,但是我使用了Log.I(),而不是System.out.println,在我的logcat中没有“Activity”的输入。
public static void test() {
for(int i = 0; i<500000; i++)
EventBus.getDefault().post(new MessageEvent(i+"\n"));
}
public void onMessageEvent(MessageEvent event) {
Log.i("Activity",event.getMessage());
}