Android AlarmManager不重复

塞巴斯蒂安·施耐德(Sebastian Schneider)

我有以下问题: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);

我不知道我的错在哪里...

提前致谢 ;)

道格·史蒂文森(Doug Stevenson)

看一下这一行:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用AlarmManager设置重复通知-Android

来自分类Dev

android openGL ES onDrawFrame不重复

来自分类Dev

Android:矢量可绘制不重复

来自分类Dev

Alarmmanager第一次触发但不重复

来自分类Dev

Android-循环随机数组且不重复

来自分类Dev

Android使用AlarmManager在每天的同一时间设置重复任务

来自分类Dev

Android Studio Java-如何不重复使用随机数组?

来自分类Dev

Android SQLite AlarmManager

来自分类Dev

Android AlarmManager陷入循环

来自分类Dev

Android:Looper vs AlarmManager

来自分类Dev

Android AlarmManager问题

来自分类Dev

安排AlarmManager Android

来自分类Dev

Android AlarmManager逻辑

来自分类Dev

Android:CountDownTimer与AlarmManager

来自分类Dev

Android AlarmManager唤醒

来自分类Dev

Android中的BroadcastManager的AlarmManager

来自分类Dev

Android如何使用AlarmManager和服务类安排另一个活动的重复方法

来自分类Dev

如何确保在android-JAVA中用尽所有指定的可能值之前,random不重复值

来自分类Dev

AlarmManager-重复模式

来自分类Dev

JavaScript间隔不重复

来自分类Dev

循环不重复吗?

来自分类Dev

setInterval不重复

来自分类Dev

汇总而不重复

来自分类Dev

虽然循环不重复

来自分类Dev

Javascript setInterval不重复

来自分类Dev

选择不重复的行

来自分类Dev

Android AlarmManager不起作用

来自分类Dev

Android AlarmManager警报启动服务

来自分类Dev

Android Service和AlarmManager崩溃