android - Play developer console: 2 error reports on 13k active users -
i have small question starting developer. i've created app has been downloaded quite lot last 2 weeks , has 13k active users. i've tested on few (samsung) phones , of course in emulator. can't generate errors, since app simple wasn't expecting so.
but today i've looked play developer console , found 2 error reports. should concerned or can errors randomly generated? know example bad custom roms can create crash, i've experienced myself.
i post class created this, plays selected sound when button clicked. 1 of crashes in nullpointerexception when button clicked, other illegalstateexception generated when mp.stop() called. me seems not possible generates error, of course wrong. code:
public class soundactivity extends activity implements onclicklistener, oncheckedchangelistener { button btn; mediaplayer mp; radiogroup slct; radiobutton radio0, radio1, radio2, radio3, radio4; int t = 1; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.btclayout); initialize(); btn.setonclicklistener(this); slct.setoncheckedchangelistener(this); mp = mediaplayer.create(this, r.raw.sound1); } public void initialize() { btn = (button) findviewbyid(r.id.button1); slct = (radiogroup) findviewbyid(r.id.radiogroup1); radio0 = (radiobutton) findviewbyid(r.id.radio0); radio1 = (radiobutton) findviewbyid(r.id.radio1); radio2 = (radiobutton) findviewbyid(r.id.radio2); radio3 = (radiobutton) findviewbyid(r.id.radio3); radio4 = (radiobutton) findviewbyid(r.id.radio4); } @override public void onclick(view v) { // todo auto-generated method stub mp.stop(); mp.reset(); switch (t) { case 1: mp = mediaplayer.create(this, r.raw.sound1); break; case 2: mp = mediaplayer.create(this, r.raw.sound2); break; case 3: mp = mediaplayer.create(this, r.raw.sound3); break; } mp.start(); } @override protected void onpause() { // todo auto-generated method stub super.onpause(); mp.release(); } @override protected void onresume() { // todo auto-generated method stub super.onresume(); mp = mediaplayer.create(this, r.raw.sound1); } @override public void oncheckedchanged(radiogroup arg0, int arg1) { // todo auto-generated method stub switch (arg1) { case r.id.radio0: t = 1; break; case r.id.radio1: t = 2; break; case r.id.radio2: t = 3; break; case r.id.radio3: t = 4; break; case r.id.radio4: t = 5; break; } } }
edit: stacktraces play console:
java.lang.illegalstateexception @ android.media.mediaplayer._stop(native method) @ android.media.mediaplayer.stop(mediaplayer.java:1033) @ com.ddroid.dismyapp.soundactivity.onclick(soundactivity.java:57) @ android.view.view.performclick(view.java:3549) @ android.view.view$performclick.run(view.java:14400) @ android.os.handler.handlecallback(handler.java:605) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:154) @ android.app.activitythread.main(activitythread.java:4944) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) @ dalvik.system.nativestart.main(native method)
the second one:
java.lang.nullpointerexception @ com.ddroid.dismyapp.soundactivity.onclick(soundactivity.java:76) @ android.view.view.performclick(view.java:2538) @ android.view.view$performclick.run(view.java:9152) @ android.os.handler.handlecallback(handler.java:587) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:130) @ android.app.activitythread.main(activitythread.java:3687) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:507) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) @ dalvik.system.nativestart.main(native method)
while these errors should not happen, it's been experience users find way crash application in unintended ways :) in each of these failures, happened in onclick()
, wrap onclick()
code inside try/catch
, log error. fact seeing error in developer console means user experienced force close
issue, trapping error better.
in many state related issues i've seen, it's the user performing operation while doing rotate on device @ same time. using android monkey can randomly simulate these kinds of errors well.
Comments
Post a Comment