我正在通过服务ScheduleAdvanceBookingService
拨打电话,在预定时间拨打另一项服务SendRequestAdvanceBookingService
。
清单文件
<service
android:name=".ScheduleAdvanceBookingService"
android:enabled="true"
android:label="@string/app_name" />
<service
android:name=".SendRequestAdvanceBookingService"
android:enabled="true"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.NOTIFY" />
</intent-filter>
</service>
我的通话代码有
public class ScheduleAdvanceBookingService extends IntentService {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
@Override
protected void onHandleIntent(Intent intent) {
Intent newIntent = new Intent(this,
SendRequestAdvanceBookingService.class);
Date startTime = (Date) intent.getSerializableExtra("startTime");
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
newIntent.setAction("android.intent.action.NOTIFY");
autoBookingAlarm = (AlarmManager) this
.getSystemService(Context.ALARM_SERVICE);
autoBookingPendingIntent = PendingIntent.getService(this, 0, newIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
long alarmCallTime = cal.getTimeInMillis();
autoBookingAlarm.set(AlarmManager.RTC_WAKEUP, alarmCallTime,
autoBookingPendingIntent);
Log.d("Taxeeta", "Scheduled a Auto Advance Booking @"
+ cal.getTime().toLocaleString());
我未来的警报服务
public class SendRequestAdvanceBookingService extends Service {
public SendRequestAdvanceBookingService() {
super();
handler = new Handler();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("Taxeeta", "Start - SEND REQUEST.");
调试语句以检查日期
08-20 13:40:14:008:D / Taxeeta(31578):预定自动提前预订@ 2014年8月20日13:41:37
我在这里缺少什么?
我试过了
cal.setTime(startTime) cal.getTimeInMilli()
答案 0 :(得分:0)
修复很简单,没有任何记录。
我跑了./adb shell dumpsys alarm > ~/dump.txt
并在我的设备上搜索了我的闹钟。我在我的应用程序设备上发现了许多未决警报。这促使我清理,并通过设置 - >应用程序 - &gt; MyApp-&gt;强制关闭强制关闭,清除警报。
然后我运行了我的应用程序,它运行了。仅仅过了一段时间,我意识到之前没有运行应用程序的手机运行良好,这暗示我再次进行清理。
所以我需要做的就是
autoBookingAlarm.cancle(autoBookingPendingIntent);
之前的
autoBookingAlarm.set(AlarmManager.RTC_WAKEUP, alarmCallTime,
autoBookingPendingIntent);
这将在安排新警报之前取消先前的警报。