Java - (android) újrahasználat eljárás öblítés után a OutputStream

szavazat
47

im próbál tenni ez Androidon:

Process p = Runtime.getRuntime().exec(sh);

   DataOutputStream out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

   out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

A második alkalommal, amikor végre out.writeBytes (); Kapok egy java IOException: „Rossz ügyszáma”. Saját app, hogy végre több natív programokat, de mindig ugyanazt a folyamatot. Bárki, aki tudja, hogy ez miért nem működik?

A kérdést 28/08/2010 13:01
felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Ha telefonál out.close(), akkor a rendszer automatikusan hívja close()az ouputstream a folyamatot.

Minden alkalommal, amikor hívást p.getOutputStream()kap ugyanaz OutputStream, a második használatát ki, p.getOutputStream()visszatér a már lezárt OutputStream.

Alapvetően a kódját, akkor nem igazán kell zárni az első DataOutputStream.

Forrás:

Válaszolt 28/08/2010 13:12
a forrás felhasználó

szavazat
1

Megjegyezzük, hogy a héj nem része az állami SDK (megjegyzés nincs dokumentálva sehol a SDK dokumentáció), így ez a kód van érvényben támaszkodva saját API-kat.

Szintén ez hozza meg kívül a szokásos alkalmazás modell - nincs garancia, hogy mi fog történni, hogy a folyamat már villás, és nem kezeli a platform. Lehet ölni bármikor.

Ez is egy nagyon hatékony módja, hogy a dolgokat, míg csinál, amit csinál a parancs a saját folyamatát. És a kiindulási külön eljárás egy parancs nem hagyja másra, csak lehet, mert még mindig fut, mint a uid.

Tehát alapvetően ... a 99,99% -a apps kérjük, ne tegye ezt. Ha írunk egy terminál app ... nos, rendben van, csak geekek fog törődni, hogy egyébként, és ez nem lesz sok haszna, mert fut a uid, de rendben van. De egyébként, kérem, nem. :)

Válaszolt 28/08/2010 19:23
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more