我有一種方法返回一個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 –