Mehrere Services

J

joschika77

Fortgeschrittenes Mitglied
1
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
 
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.
 
hmmm wie das? Das Gerät ist verbunden aber es springt immer der Emulator an. Muß ich noch Einstellungen machen?

MfG
 
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
 
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?
 
ja mit einer exception meldung ist das problem wahrscheinlich in 1 min gelöst ;)
 
Also USB-Debugging ist/war eingestellt. Woran erkenne ich das das Gerät erkannt wurde? Wenn ich starte geht immer der Emulator auf.
 
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.
 
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ß
 
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.
 
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?
 
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.
 
ohne root geht da gar nichts
 
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)
 
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...
 
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)
 
du musst nach dem benutzen eines cursors diesen immer wieder schließen

cursor.close();

das mag er gar nicht, wenn die offen bleiben ;)
 
Wie? Immer wieder? Dachte beim Start des Prog. öffnen und beim Beenden des Progs. wieder schliessen.
 
  • Danke
Reaktionen: cptechnik
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

B
Antworten
1
Aufrufe
756
swa00
swa00
H
  • HoustonWeHaveAProblem
Antworten
3
Aufrufe
771
moin
M
H
Antworten
2
Aufrufe
788
HelloWorldx8
H
Zurück
Oben Unten