2017-01-09 8 views
0

私は両方のアプリケーションでMarshmallowを使用していますので、私のアプリがエミュレータでは安定していますが、それは動作しますが、かなり後すぐにクラッシュします。このlogcat:アプリケーションはエミュレータ上で正常に動作しますが、電話で頻繁にクラッシュします

Process: com.madhatter.nat.test, PID: 28210 
java.lang.RuntimeException: Unable to start service [email protected] with null: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3045) 
at android.app.ActivityThread.-wrap17(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1452) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
at com.madhatter.nat.test.OverlayService.onStartCommand(OverlayService.java:45) 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3028) 
at android.app.ActivityThread.-wrap17(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1452)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5443)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)  

とOverlayServiceでonStartCommand:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    item = intent.getExtras().getParcelable(DataItemAdapter.ITEM_KEY); 
    if (item == null) { 
     throw new AssertionError("Null data item received!"); 
    } else { 
     getImageDrawable(); 
    } 
    return START_STICKY; 
} 

ライン45は、 "項目" で始まるものです。 私はいくつかの点について本当に感謝しています。私は必要に応じてより多くのコードを投稿することができます。ありがとう!

EDIT:Logcatシステムが再起動し、私はあなたの意図がnullであるかどう最初のチェックにあなたを示唆し、その後のような関連の操作を実行

if(intent != null){ 
    item = intent.getExtras().getParcelable(DataItemAdapter.ITEM_KEY); 
    if (item == null) { 
     throw new AssertionError("Null data item received!"); 
    } else { 
     getImageDrawable(); 
    } 
} 

をSTART__REDELIVER_INTENT

01-10 09:18:09.144 1840-7536/? I/WindowState: WIN DEATH: Window{6594f29 u0 com.madhatter.nat.test/com.madhatter.nat.test.MainActivity} 
01-10 09:18:09.147 1840-7538/? I/WindowState: WIN DEATH: Window{cee56ff u0 com.madhatter.nat.test} 
01-10 09:18:09.151 1840-6620/? I/WindowState: WIN DEATH: Window{26fc259 u0 com.madhatter.nat.test} 
01-10 09:18:09.154 1840-7539/? I/ActivityManager: Process com.madhatter.nat.test (pid 29128) has died 
01-10 09:18:09.154 1840-7539/? W/ActivityManager: Scheduling restart of crashed service com.madhatter.nat.test/.OverlayService in 32668ms 
01-10 09:18:09.157 1840-3383/? W/InputDispatcher: channel '7370c7b com.madhatter.nat.test/com.madhatter.nat.test.SelectionPage (server)' ~ Consumer closed input channel or an error occurred. events=0x9 
01-10 09:18:09.157 1840-3383/? E/InputDispatcher: channel '7370c7b com.madhatter.nat.test/com.madhatter.nat.test.SelectionPage (server)' ~ Channel is unrecoverably broken and will be disposed! 
01-10 09:18:09.157 1840-3383/? W/InputDispatcher: channel 'dc69e50 com.madhatter.nat.test/com.madhatter.nat.test.LauncherPage (server)' ~ Consumer closed input channel or an error occurred. events=0x9 
01-10 09:18:09.157 1840-3383/? E/InputDispatcher: channel 'dc69e50 com.madhatter.nat.test/com.madhatter.nat.test.LauncherPage (server)' ~ Channel is unrecoverably broken and will be disposed! 
01-10 09:18:09.159 1840-4579/? I/WindowState: WIN DEATH: Window{dc69e50 u0 com.madhatter.nat.test/com.madhatter.nat.test.LauncherPage} 
01-10 09:18:09.159 1840-4579/? W/InputDispatcher: Attempted to unregister already unregistered input channel 'dc69e50 com.madhatter.nat.test/com.madhatter.nat.test.LauncherPage (server)' 
01-10 09:18:09.162 1840-1851/? I/WindowState: WIN DEATH: Window{7370c7b u0 com.madhatter.nat.test/com.madhatter.nat.test.SelectionPage} 
01-10 09:18:09.162 1840-1851/? W/InputDispatcher: Attempted to unregister already unregistered input channel '7370c7b com.madhatter.nat.test/com.madhatter.nat.test.SelectionPage (server)' 
01-10 09:18:41.843 1840-1854/? I/ActivityManager: Start proc 32159:com.madhatter.nat.test/u0a125 for service com.madhatter.nat.test/.OverlayService 
01-10 09:18:41.906 32159-32159/? W/System: ClassLoader referenced unknown path: /data/app/com.madhatter.nat.test-2/lib/arm 
+0

[NullPointerExceptionとは何か、それを修正する方法](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i) -fix-it) –

答えて

1

のドキュメントを確認してください10。 「このサービスのプロセスが殺されている場合、それは(onStartCommand(テント、int型、int型)から戻った後)に開始されている間、その後、開始状態のままにします

が、ドン:ここでは、onStartCommand()からSTART_STICKYを返すときに何が起こるかですこの提供された意図を保持する。その後、システムはサービスを再作成しようとします。開始状態であるため、新しいサービスインスタンスの作成後にonStartCommand(Intent、int、int)を呼び出すことが保証されます。保留中の開始コマンドがサービスに配信されない場合は、nullのインテントオブジェクトで呼び出されるため、これを確認するために注意する必要があります。

これはあなたのケースで起こるまさに、あなたがintentパラメータのnullを取得します。それは意志、それは(onStartCommand(テント、int型、int型)から戻った後)に開始されている間、このサービスのプロセスが殺されている場合

:あなたはどちらかnullを確認したり、次のように動作しているSTART_REDELIVER_INTENTを返す必要があります再起動のためにスケジュールされ、最後に配信されたインテントがonStartCommand(Intent、int、int)を介して再度配信されます。

+0

ありがとうございます。 nullをチェックすることは役に立ちません。ただし、START_REDELIVER_INTENTを返すと、1つの警告が表示されます。最初のクラッシュが1つあります。その後、しばらくしてからサービスが再開し、再びクラッシュしません。何か案は? :) –

+0

最初は、onStartCommandの初回起動時にSTART_REDELIVER_INTENTを正常に返す必要があることは、当初考えられていなかったようです。だから初めてクラッシュする。 – ashubuntu

+0

私のエミュレータではなく私のデバイスでサービスがクラッシュしたのは、他のアプリケーションでメモリを利用できるようにサービスが強制終了されたためです。ソリューションは、フォアグラウンドとしてサービスを開始することでした。私が使ったドキュメントはhttps://android-developers.googleblog.com/2010/02/service-api-changes-starting-with.htmlでした。あなたの助けを借りてくれてありがとうございました。正しい方向に私を指摘しました。 –

0

を使用していくつかの時間STICKY_SERVICE意図が壊れている可能性がありますので、意図が壊れている可能性があります。

+0

ありがとうございますが、これは何の違いも生じていないようです... –

関連する問題