1

初心者の開発者として小さな質問があります。過去2週間にかなり多くダウンロードされ、13,000人のアクティブユーザーがいるアプリを作成しました。私はこれをいくつかの(Samsung)電話で、そしてもちろんエミュレーターでテストしました。アプリはシンプルなので、エラーが発生することは予想していませんでした。

しかし、今日、Play Developer Consoleを調べたところ、2つのエラーレポートが見つかりました。これは私が心配すべきことですか、それともこのエラーはランダムに生成される可能性がありますか?たとえば、悪いカスタムROMがクラッシュを引き起こす可能性があることを私は知っています、私はこれを自分で経験しました。

これを作成したクラスを投稿します。ボタンをクリックすると、選択したサウンドが再生されます。ボタンがクリックされたときにnullPointerExceptionでクラッシュするものの1つ、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;
    }
}
}

編集:これはPlayConsoleからのスタックトレースです。

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)atjava.lang.reflect.Method。 combNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:511)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)atcom.android.internal。 os.ZygoteInit.main(ZygoteInit.java:551)at dalvik.system.NativeStart.main(ネイティブメソッド)

2つ目:

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)atcom.android。 internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)at dalvik.system.NativeStart.main(ネイティブメソッド)

4

1 に答える 1

0

これらのエラーは発生するべきではありませんが、ユーザーが意図しない方法でアプリケーションをクラッシュさせる方法を常に見つけるというのが私の経験です:) これらの失敗のそれぞれで、それは で発生したため、コードを でonClick()ラップしてから、単純にログに記録しますエラー。開発者コンソールにエラーが表示されているという事実は、ユーザーが問題を経験したことを意味するため、エラーをトラップする方が確実に優れています。onClick()try/catchForce Close

私が見た多くの状態関連の問題では、主に、ユーザーがデバイスで同時に回転を実行しながら操作を実行することが原因です。Android Monkeyを使用すると、この種のエラーもランダムにシミュレートできる場合があります。

于 2012-06-06T12:12:15.120 に答える