作为初级开发人员,我有一个小问题。我创建了一个应用程序,该应用程序在过去 2 周内下载了很多,并且拥有 13k 活跃用户。我已经在几部(三星)手机上进行了测试,当然也在模拟器中进行了测试。我不能产生任何错误,因为应用程序很简单,我没想到它会这样做。
但是今天我查看了我的 Play 开发者控制台,发现了 2 个错误报告。这是我应该关注的事情还是可以随机生成这个错误?例如,我知道糟糕的自定义 rom 会导致崩溃,我自己也经历过。
我将发布创建它的类,单击按钮时会播放选定的声音。单击按钮时出现 nullPointerException 崩溃之一,另一个是调用 mp.stop() 时生成的非法状态异常。对我来说,这似乎不可能产生错误,但我当然可能是错的。这是代码:
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 the activity is 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;
}
}
}
编辑:这是来自 Play 控制台的堆栈跟踪:
java.lang.IllegalStateException at android.media.MediaPlayer._stop(Native Method) at android.media.MediaPlayer.stop(MediaPlayer.java:1033) at com.ddroid.DisMyApp.SoundActivity.onClick(SoundActivity.java:57) at android.view.View.performClick(View.java:3549) 在 android.os.Handler.handleCallback(Handler.java:605) 在 android.os.view.View$PerformClick.run(View.java:14400) 在 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。在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 在 com.android.internal 的 java.lang.reflect.Method.invoke(Method.java:511) 的 invokeNative(Native Method)。 os.ZygoteInit.main(ZygoteInit.java:551) 在 dalvik.system.NativeStart.main(Native Method)
第二个:
java.lang.NullPointerException at com.ddroid.DisMyApp.SoundActivity.onClick(SoundActivity.java:76) at android.view.View.performClick(View.java:2538) at 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) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) at dalvik.system.NativeStart.main(Native Method)