2016-03-21 7 views
2
public int onStartCommand(Intent intent, int flags, int startId) { 
    if (intent.getExtras() != null) { 
     String temp = intent.getStringExtra("key"); 
     temp1 = Integer.parseInt(temp); 
     counter = temp1; 
    } 
} 

ich Daten an den Service vorbei und es funktioniert perfekt, wenn die Anwendung geöffnet ist, aber stürzt ab, sobald ich die App zu schließen .. Ich habe viele Dinge ausprobiert und ich bin neu bei Android. Jede Hilfe würde geschätzt werdenApp stürzt geschlossen, wenn während eines Dienstes Android verwenden, wie im Absichten versucht, verwenden

Vielen Dank im Voraus.

Hier wird das Protokoll

03-21 15: 35: 07.868 21.818 bis 21.818 /? E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.cs442.shash5259.assignment_6, PID: 21818 java.lang.RuntimeException: Service konnte nicht gestartet werden [email protected] mit null: java.lang .NullPointerException: Versuch, die virtuelle Methode 'android.os.Bundle android.content.Intent.getExtras()' für eine Nullobjekt-Referenz bei android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3045) bei android.app aufzurufen .ActivityThread.-wrap17 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1452) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os. Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5443) bei java.lang.reflect.Method.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 728) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) verursacht durch: java.lang.NullPointerException: Versuch, virtuelle Methode 'android.os.Bundle android.content.Intent aufzurufen. getExtras() 'auf einem Nullobjekt Referenz bei com.cs442.shash5259.assignment_6.Myservice.onStartCommand (Myservice.java:55) bei android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3028) bei android.app .ActivityThread.-wrap17 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1452) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5443) bei java.lang.reflect.Method.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:

728) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
+0

Fehlerprotokoll erforderlich – Shreyans

+0

Bitte posten Sie weitere Details. Was ist der Logcat wenn eine App abstürzt? –

+0

03-21 15: 35: 07.868 21818-21818 /? E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.cs442.shash5259.assignment_6, PID: 21818 java.lang.RuntimeException: Service konnte nicht gestartet werden [email protected] mit null: java.lang .NullPointerException: Versuch, virtuelle Methode 'android.os.Bundle android.content.Intent.getExtras()' auf einem Nullobjekt Verweis –

Antwort

2

in den Protokollen der Suche, es ist klar, dass Ihr Intent Objekt in onStartCommandnull ist, wenn App geschlossen ist.

am documentation Blick in den Quellcode der Dienstleistung, wird erwähnt, dass:

Die Intent versorgt onStartCommand null sein kann, wenn der Dienst wird neu gestartet wird, nachdem seinen Prozess verschwunden ist, und es hatte zuvor irgendetwas zurückgegeben außer START_STICKY_COMPATIBILITY.

Je nach den Anforderungen Ihrer App können Sie auf mindestens zwei verschiedene Arten damit umgehen.

1.Sie können den Code wie unten in Ihrem onStartCommand ändern:

public int onStartCommand(Intent intent, int flags, int startId) { 
     if (intent!= null) { 
      String temp = intent.getStringExtra("key"); 
      temp1 = Integer.parseInt(temp); 
      counter = temp1; 
     } 
    } 

Dies wird den Absturz verhindern, sondern das counter

2.Or nicht aktualisieren Sie START_REDELIVER_INTENT im onStartCommand() Rückruf-Service, so dass die gesamte zurückkehren Intent wird nach einem Neustart gesendet, wodurch verhindert wird, dass Intentnull ist.

+0

danke, dass es gelöst hat START_REDELIVER_INTENT hat den Trick gemacht, obwohl es ziemlich lange dauert, bis die App neu gestartet wird –

Verwandte Themen