Mehrere Services

  • 22 Antworten
  • Neuester Beitrag
Diskutiere Mehrere Services im Android App Entwicklung im Bereich Betriebssysteme & Apps.
J

joschika77

Fortgeschrittenes Mitglied
Hallo, mein Problem ist das ich 2 Services im Hintergrund laufen lassen möchte und anscheinend nur einen kann, da er abschmiert wenn die Activity im Hintergrund ist. Das tut er nur sobald ich den zweiten starte. Kommentiere ich den zweiten aus läufts einwandfrei. Der zweite Service macht erstmal nichts um mögliche Fehler auszuschließen, also es ist nur das Grundgerüst eines Services. Meine Frage ist, kann eine Anwendung nur ein Service verwalten oder wie sieht das aus? Zu der Exception die dort kommt kann ich nichts sagen, da es auf dem Emulator nicht passiert, traurig aber wahr. Ich hoffe es kann mir jemand was zu Services sagen?

MfG
 
M

miracle2k

Ambitioniertes Mitglied
joschika77 schrieb:
Zu der Exception die dort kommt kann ich nichts sagen, da es auf dem Emulator nicht passiert, traurig aber wahr. Ich hoffe es kann mir jemand was zu Services sagen?
Du kannst die Exception doch dennoch abfragen? Gerät mit dem PC vebinden, sollte ganz normal in Eclipse angezeigt werden als Gerät, und logcat dir die Infos geben.
 
J

joschika77

Fortgeschrittenes Mitglied
hmmm wie das? Das Gerät ist verbunden aber es springt immer der Emulator an. Muß ich noch Einstellungen machen?

MfG
 
S

swordi

Lexikon
eclipse hat probleme, wenn man das gerät im nachhineine einsteckt.

schließ mal eclipse. steck das händy an und starte eclipse neu. dann müsste es eigenlich gehn
 
Maniac

Maniac

Stammgast
Vor allem aber muss Dein Handy vom adb erkannt werden und im Handy die Option "USB-Debugging" (unter Einstellungen -> Anwendungen) aktiviert sein.

Soweit ich das verstehe und weiß, dürfte eigentlich nichts dagegen sprechen, dass beliebig viele Services gestartet werden... es sei denn, sie schlucken zuviel Speicher oder sowas.

Ich würde aber eher auf was ganz banales tippen, wie nen NullPointer oder sowas...

Wie steuerst / startest Du die Services denn?
 
S

swordi

Lexikon
ja mit einer exception meldung ist das problem wahrscheinlich in 1 min gelöst ;)
 
J

joschika77

Fortgeschrittenes Mitglied
Also USB-Debugging ist/war eingestellt. Woran erkenne ich das das Gerät erkannt wurde? Wenn ich starte geht immer der Emulator auf.
 
Maniac

Maniac

Stammgast
Gib mal in der Konsole (aufm PC)
adb devices
ein. Da müsste dann Dein Handy angezeigt werden. Und in der DDMS Ansicht von Eclipse müsste es auch zu sehen sein.
 
S

Shinigami

Erfahrenes Mitglied
Hallo.

1.) Im Geräte-Manager muss dein Handy als ADB Interface auftauchen (nicht die Daten freigeben nachdem Du das USB-Kabel eingesteckt hast)

2.) mit dem Befehl adb devices in der Konsole solltest Du Dein Gerät auch in der Liste sehen - da steht dann nen recht kryptischer Code wie HT1233KV11343 für Dein Gerät (die adb.exe liegt im SDK-Verzeichnis unter Tools)

Gruß
 
Maniac

Maniac

Stammgast
Doch, kommt auf das Gerät und dessen Firmware an... hast Du ne root- und debuggable Firmware, brauchst Du nichts weiter zu tun.

Wenn Du z.B. das Galaxy ohne root Firmware hast, musst Du im Manifest von Deinem Programm debuggable auf true stellen.

Dann eigentlich ganz normal starten wie sonst im Emu.
 
J

joschika77

Fortgeschrittenes Mitglied
Oh ja das klappt. Sehr gut. Thx a lot. Endlich vernünftig arbeiten. Ich habe mich mit der Konsole zum Gerät verbunden und würde gern auf die DB zugreifen. Er sagt immer Permission denied. Gibt es da ne Einstellung oder wie siehts aus?
 
Maniac

Maniac

Stammgast
Hängt auch von root ab... wenn Du in Dein Verzeichnis unter /data kommst, müsstest Du die zumindest raus kopieren können und dann aufm Rechner anschauen oder so.
 
S

swordi

Lexikon
ohne root geht da gar nichts
 
J

joschika77

Fortgeschrittenes Mitglied
So habe jetzt die Exception...ist tatsächlich ne NullPointer :D
Weiß nur nicht warum. In dem Service läuft ein Thread der Daten versendet über Socket.

Code:
09-04 10:00:41.980: ERROR/AndroidRuntime(398): Uncaught handler: thread main exiting due to uncaught exception
09-04 10:00:42.080: ERROR/AndroidRuntime(398): java.lang.NullPointerException
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at com.logbook.EGpsService$MyLocationListener.onLocationChanged(EGpsService.java:147)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:181)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:114)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:130)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.os.Looper.loop(Looper.java:123)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at android.app.ActivityThread.main(ActivityThread.java:3948)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at java.lang.reflect.Method.invokeNative(Native Method)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at java.lang.reflect.Method.invoke(Method.java:521)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
09-04 10:00:42.080: ERROR/AndroidRuntime(398):     at dalvik.system.NativeStart.main(Native Method)
 
Maniac

Maniac

Stammgast
EGpsService.java:147

Das gibt Dir doch die Datei und die Zeilennummer an... da einfach mal schauen, was Du da tust und ob da ggf. ein Objekt null sein könnte. Bzw. einfach mal rein debuggen...
 
J

joschika77

Fortgeschrittenes Mitglied
Oh man, ich kann nicht gucken...:mad: Danke dir.
Sag mal ich hab da immer noch ne andere Exception die aber kein Problem darstellt, also das Prog stürzt nicht ab davon. Das stört/nervt aber. Offensichtlich hat er ein Problem mit Cursor.finalize(). Wäre gut wenn du dazu was sagen könntest.

Code:
09-04 10:14:02.601: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:02.601: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431ca2f8 on null that has not been deactivated or closed
09-04 10:14:02.601: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:02.601: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:03.261: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:03.261: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c9ba8 on null that has not been deactivated or closed
09-04 10:14:03.261: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:03.261: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:03.751: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:03.751: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c9868 on null that has not been deactivated or closed
09-04 10:14:03.751: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:03.751: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:08.540: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:08.540: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c8e58 on null that has not been deactivated or closed
09-04 10:14:08.540: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:08.540: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:08.998: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:09.000: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c8768 on null that has not been deactivated or closed
09-04 10:14:09.000: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:09.000: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:09.310: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:09.310: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c8018 on null that has not been deactivated or closed
09-04 10:14:09.310: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:09.310: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:09.662: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:09.662: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c7cd8 on null that has not been deactivated or closed
09-04 10:14:09.662: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:09.662: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:24.251: DEBUG/dalvikvm(462): threadid=5: still suspended after undo (s=1 d=1)
09-04 10:14:24.251: INFO/ActivityManager(62): Stopping service: com.logbook/.EGpsService
09-04 10:14:24.550: INFO/ActivityManager(62): Stopping service: com.logbook/.ESendDataService
09-04 10:14:24.640: DEBUG/LocationManager(462): removeUpdates: listener = com.logbook.EGpsService$MyLocationListener@431bb528
09-04 10:14:25.685: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:25.685: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c7440 on null that has not been deactivated or closed
09-04 10:14:25.685: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:25.685: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:25.960: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:25.960: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c6e68 on null that has not been deactivated or closed
09-04 10:14:25.960: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:25.960: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
09-04 10:14:26.160: INFO/dalvikvm(462): Uncaught exception thrown by finalizer (will be discarded):
09-04 10:14:26.160: INFO/dalvikvm(462): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@431c6890 on null that has not been deactivated or closed
09-04 10:14:26.160: INFO/dalvikvm(462):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
09-04 10:14:26.160: INFO/dalvikvm(462):     at dalvik.system.NativeStart.run(Native Method)
 
S

swordi

Lexikon
du musst nach dem benutzen eines cursors diesen immer wieder schließen

cursor.close();

das mag er gar nicht, wenn die offen bleiben ;)
 
J

joschika77

Fortgeschrittenes Mitglied
Wie? Immer wieder? Dachte beim Start des Prog. öffnen und beim Beenden des Progs. wieder schliessen.
 
Maniac

Maniac

Stammgast
Jein... wenn Du z.B. Deine Activity verlässt (oder z.B. den Schirm drehst), kann es auch sein, dass diese Activity zerstört wird und damit auch der Cursor. Wenn der dann nicht geschlossen ist, ist das böse...

Also in Activitys kannst Du Dir den Cursor vom Framework managen lassen -> siehe managedQuery.

Ansonsten halt genau auf die Lifecycle-Methoden achten...
 
Ähnliche Themen - Mehrere Services Antworten Datum
2
2