2016-03-21 3 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; 
    } 
} 

Я передаю данные службе и прекрасно работает, когда приложение открыто, но сбой, как только я закрою приложение. Я пробовал много вещей, и я новичок в Android. Любая помощь будет оцененаПриложение аварийно завершает работу при закрытии при использовании служебного андроида, так как им пытаются использовать намерения

Заранее спасибо.

Вот это логарифм

03-21 15: 35: 07,868 21818-21818 /? E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.cs442.shash5259.assignment_6, PID: 21818 java.lang.RuntimeException: Не удается запустить службу [email protected] с нулем: java.lang .NullPointerException: попытка вызвать виртуальный метод 'android.os.Bundle android.content.Intent.getExtras()' в ссылке нулевого объекта на android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3045) на android.app .ActivityThread.-wrap17 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1452) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os. Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5443) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 728) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.os.Bundle android.content.Intent. getExtras() 'по ссылке нулевого объекта по адресу com.cs442.shash5259.assignment_6.Myservice.onStartCommand (Myservice.java:55) at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3028) at android.app .ActivityThread.-wrap17 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1452) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5443) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 728) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)

+0

необходим журнал ошибок – Shreyans

+0

Пожалуйста, разместите более подробную информацию. Что такое logcat при сбое приложения? –

+0

03-21 15: 35: 07.868 21818-21818 /? E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.cs442.shash5259.assignment_6, PID: 21818 java.lang.RuntimeException: Не удается запустить службу [email protected] с нулем: java.lang .NullPointerException: попытка вызвать виртуальный метод 'android.os.Bundle android.content.Intent.getExtras()' на ссылке на нулевой объект –

ответ

2

Глядя на журналы, то ясно, что ваш Намерение объект в onStartCommand является null, когда приложение закрыто.

Глядя на documentation внутри исходного кода службы, он отметил, что:

Intent поставляется onStartCommand может быть пустым, если служба перезапускается после его процесс пошел прочь, и он ранее возвращал что-либо кроме START_STICKY_COMPATIBILITY.

Вы можете иметь дело с этим, по крайней мере, в 2 разных способах в зависимости от требований вашего приложения.

1.Вы можете изменить код, как показано ниже в вашем onStartCommand:

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

Это позволит предотвратить аварию, но не обновит counter

2.Or вы можете вернуть START_REDELIVER_INTENT в onStartCommand() обратного вызова в обслуживании, так что весь намерение отправляется после перезапуска, тем самым предотвращая Intent от null.

+0

спасибо, что решил, что START_REDELIVER_INTENT сделал трюк, хотя для перезагрузки приложения требуется довольно много времени –

Смежные вопросы