我发布了我的应用程序以及某些手机,例如我的APP崩溃的Galaxy Nexus或HTC Explorer。
我在很多手机上测试过,应用程序运行得很好。
你能解释一下为什么会发生这种情况以及如何解决这个问题吗?
错误
java.lang.IllegalStateException
at android.media.MediaPlayer.isPlaying(Native Method)
at com.mario.kvizoman.SoloIgra.novopitanjce(SoloIgra.java:922)
at com.mario.kvizoman.SoloIgra.onClick(SoloIgra.java:901)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3768)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)
代码
if(reptimer!=null) {
if(reptimer.isPlaying()) {
reptimer.stop();
}
}
onCreate reptimer
reptimer = MediaPlayer.create(SoloIgra.this, R.raw.napeto);
答案 0 :(得分:11)
根据Android文档:“如果内部播放器引擎尚未初始化或已被释放,则为IllegalStateException。”
因此,请确保您的MediaPlayer已初始化,并且您不使用已发布的MediaPlayer。
答案 1 :(得分:5)
在您的代码中,由于repTimer.isPlaying()
被调用,我认为JAVA
repTimer
对象不是 NULL
。但是,IllegalStateException
native
对象为MediaPlayer
时会触发NULL
(参考:http://androidxref.com/4.2.2_r1/xref/frameworks/base/media/jni/android_media_MediaPlayer.cpp#380)。因此,您的JAVA
州和native
州之间存在一些不匹配。
P.S:您可能需要在此问题中粘贴位置之前检查代码。在某些早期的方法调用中,本机对象已被破坏,而这种对象未反映在JAVA
对象状态中。