他の人のAndroidデバイスからクラッシュレポートを介してこれを取得しているため、これをトラブルシューティングするのは少し難しいです。質問する方法がなく、自分のAndroidデバイスで発生するのを見たことがありません。
クラッシュレポートによると、Android 4.1.2であり、スタックトレースは次のとおりです。
java.lang.NullPointerException
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:2102)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5021)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
残念ながら、grepcode.comのAndroidソースコードはこれらの行番号と一致していないようです。そのため、どちらがnullであるかはわかりません。
これが起こったときにユーザーが何をしていたのかわからないので、音楽や効果音の再生中にこれが起こったのか、それとも破壊時に起こったのか、それとも何が起こったのかわかりません。破壊中に起こるのではないかと思います。アクティビティのonDestroyメソッドに次のコードがあります。
public void onDestroy() {
synchronized(curPlayers) {
for(List<MediaP> ms : curPlayers.values()) {
synchronized(ms) {
for(MediaP m : ms) {
synchronized(m) {
m.m.stop();
m.m.release();
}
}
}
}
curPlayers.clear();
}
}
private static class MediaP {
private MediaP(MediaPlayer m) {
this.m = m;
}
private MediaPlayer m;
private boolean wasPlaying = false;
}
そこに私がすべきことはありますか?
MediaPlayer.stop()
beforeへの呼び出しを削除しますrelease()
。Nexus 4、5、7、10、Moto Xで同様のクラッシュが多数発生しています。詳しくは、MediaPlayer $ EventHandler.handleMessageのNullPointerExceptionをご覧ください。
私の知る限り理解し、ある時点で、彼らからメッセージを送信するに切り替えstop()
、そしてあなたが不運十分を得れば、あなたは、release()
彼らはそれがnullではないことを確認した後、オブジェクトの権利を無効にし、そのメソッドを呼び出すようにしようとします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加