我正在写简单的闹钟。它包含带有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。它有效,但有一个案例我无法理解。