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