我有以下问题:onCreate
第一次执行警报管理器时,我在中注册了警报管理器。但是在我的延迟时间(1分钟)之后,应该再执行一次。但这是行不通的。为什么?
我的代码:
报警接收器
public class AlarmReceiver extends WakefulBroadcastReceiver {
private AlarmManager mAlarm;
private PendingIntent mAlarmIntent;
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, PortalPullService.class);
String email = Helper.getEmail(context);
String pw = Helper.getPw(context);
service.putExtra("email", email);
service.putExtra("pw", pw);
startWakefulService(context, service);
}
public void setAlarm(Context context) {
mAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
mAlarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
int interval = R.integer.update_interval_in_mins * 60 * 1000;
mAlarm.setInexactRepeating(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
interval,
interval,
mAlarmIntent);
ComponentName reciever = new ComponentName(context, AlarmBootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(reciever,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void cancelAlarm(Context context) {
if(mAlarm != null) {
mAlarm.cancel(mAlarmIntent);
}
ComponentName reciever = new ComponentName(context, AlarmBootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(reciever,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
PullService
public class PortalPullService extends IntentService {
private static final String LOG_TAG = "PortalPullService";
public PortalPullService() {
super(LOG_TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
//TODO make request to ** check if new Infos are available, then send notification
Helper.sendNotification(this, "Test", "test"); /My test if this works
AlarmReceiver.completeWakefulIntent(intent);
}
}
接收者通过注册 new AlarmReceiver().setAlarm(this);
我不知道我的错在哪里...
提前致谢 ;)
看一下这一行:
int interval = R.integer.update_interval_in_mins * 60 * 1000;
R.integer.update_interval_in_mins的值与您的想法不符。这是在构建过程中分配的常量值,它指向包含实际值的整数资源。
如果要从资源中提取实际值,请执行以下操作:
int interval = context.getResources().getInteger(R.integer.update_interval_in_mins) * 60 * 1000;
另外,您使用的setInexactRepeating()错误。请参阅该文档。您将其传递interval
给第一个警报时间(这不是间隔,而是绝对时间)。
并且不要忘记,您可以记录值以查看它们的使用情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句