我正在尝试创建一个短信应用,它可以在一天中的一个时间发送短信。为此,我创建了两个服务SendMessagePeriodicService和SendMessageService。
这是我的SendMesagePeriodicService,它应该在一天的设定时间触发SendMessageService。问题是每次调用onStartCommand方法时都会触发...
public class SendMessagePeriodicService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) { //FIXME
Calendar cal = Calendar.getInstance();
Intent i = new Intent(this, SendMessageService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
cal.set(Calendar.MINUTE, PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("minute", -1));
cal.set(Calendar.HOUR_OF_DAY, PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("hour", -1));
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pintent);
return Service.START_NOT_STICKY;
}
}
我还检查过sharedPreferences中的值是否正确......
有谁知道为什么会这样?
答案 0 :(得分:0)
我会通过在活动中设置alarmmanager而不是在警报触发时使用BroadcastReceiver发送短信来做到这一点。 我使用相同的技术在特定时间开始通知。
我想我已经阅读过你现在只使用文件操作的服务。但我不是100%。
答案 1 :(得分:0)
似乎发生这种情况的原因是我为触发时间设定的时间是过去的。这意味着AlarmManager会立即触发,而不是下次发生此设置时间。