我有一种方法返回一个BufferedReader
,我的应用程序从中获取另一个程序的输出。将BufferedReader传递给服务
在Manager.java
public BufferedReader start() {
String[] commandLine2 = { "/system/bin/sh", "/system/app/launcher.sh" };
Process process = null;
try {
process = Runtime.getRuntime().exec(commandLine2);
reader = new BufferedReader(new InputStreamReader(
process.getInputStream()));
writer = new OutputStreamWriter(process.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return reader;
}
在我的MainActivity我使用: outputReader = manager.start();
其中outputReader是BufferedReader
和经理的私有实例是经理之一。
只要我在MainActivity.java里面的东西一个的AsyncTask使用缓冲读卡器进入ok了,因为我BufferedReader
是在其范围内但可见,当我想用一个服务来完成我有一些麻烦的任务。
没有办法将Intent.putExtra(Object)
用于既不可序列化也不可Parcelable的对象(并且我的BufferedReader不是)。
如何将我的BufferedReader
传递给服务?
你就不能暴露你的服务的公共方法,并把它传递给?例如'setReader()'。看到这里:http://stackoverflow.com/questions/2272378/android-using-method-from-a-service-in-an-activity –
在我的MainActivity我使用此代码来启动服务:'Intent service = new意图(getApplicationContext(),ReaderService.class); startService(service);'在这种情况下,我怎么能使用'setReader()'方法?当然,有这样的方法是有用的和足够的 – Rob013
如果不知道你的架构或服务,我会说一个绑定的服务会更好 - 那么你基本上可以在你的活动中引用你的服务,你可以调用公共方法*。看看这里的IBinder示例:http://stackoverflow.com/a/10799514/833647 –