播放开发者控制台:有关13k活跃用户的2个错误报告

时间:2012-06-06 10:43:27

标签: android

作为初级开发者,我有一个小问题。我创建了一个应用程序,该应用程序在过去两周内已经下载了很多,并且拥有13k活跃用户。我已经在一些(三星)手机上测试了这个,当然还有模拟器。我无法生成任何错误,因为应用程序很简单,我没想到会这样做。

但今天我查看了我的Play Developer Console并找到了2个错误报告。这是我应该关注的事情,还是可以随机生成这些错误?我知道例如糟糕的自定义rom会造成崩溃,我自己也经历过这种情况。

我将发布创建此内容的类,当单击按钮时,它会播放选定的声音。单击按钮时nullPointerException中的一个崩溃,另一个是调用mp.stop()时生成的illegalStateException。对我而言,这似乎不可能产生错误,但当然我可能是错的。这是代码:

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)at   android.view.View $ PerformClick.run(View.java:14400)at   android.os.Handler.handleCallback(Handler.java:605)at   android.os.Handler.dispatchMessage(Handler.java:92)at   android.os.Looper.loop(Looper.java:154)at   android.app.ActivityThread.main(ActivityThread.java:4944)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:784)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)at   dalvik.system.NativeStart.main(原生方法)

第二个:

  

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)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:3687)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:867)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)at   dalvik.system.NativeStart.main(原生方法)

1 个答案:

答案 0 :(得分:0)

虽然不应该发生这些错误,但根据我的经验,用户总会找到一种方法以非预期的方式使应用程序崩溃:)在每次失败中,都发生在onClick(),所以我会换行onClick()内的try/catch代码,然后只记录错误。您在开发人员控制台中看到错误这一事实意味着用户遇到了Force Close问题,因此捕获错误肯定会更好。

在我看到的许多州相关问题中,主要是与用户同时在设备上进行旋转时执行操作。有时使用Android Monkey也可以随机模拟这些类型的错误。