1

シンプルな目覚まし時計を書いています。これには、ListView を含む MainActivity、ウェイクアップ メッセージを含む WakeActivity、およびサウンドを再生する PlayerService が含まれています。次のコードを使用して目覚まし時計を設定します。

Intent i = new Intent(context, WakeupActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, a.getId(), i, 0);
    Calendar cal = getNextAlarm();
    if(cal!=null){
        alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
        if(toast) showToast(cal);
    }

Androidマニフェストでは、WakeupActivityは次のように定義されています

android:launchMode="singleTask"

onCreate メソッドで、閉じるボタンを初期化します。onResume で PlayerService を開始します

Intent i = new Intent(this, PlayerService.class.); startActivity(i);

ユーザーが閉じるボタンをクリックすると、私が呼び出しfnish();、最後に onPause() で PlayerService を停止します。動作しますが、理解できないケースが 1 つあります。

  1. アラームを設定し、メイン アクティビティを一番上に置きます。WakeupActivity と PlayerService が正常に開始されます。閉じるボタンを押すと MainActivity に戻り、すべて問題ありません。
  2. アラームをセットしてホームボタンを押します。WakeupActivity と PlayerService が正常に開始されます。閉じるボタンを押すと、音楽が停止し、WakeupActivity 呼び出しの onDestroy() が呼び出されます (1 つのケースのように)。なんてこったい?私はその活動を終了します!なんでそうなの?助けてください!
4

0 に答える 0