警报管理器待定意图不解雇服务

时间:2015-06-22 13:55:55

标签: android android-intent android-alarms

我有一个alarm,我想每10分钟出发一次,但它没有开火。这是我在AlarmService中设置MainActivity的位置。是的,我已经宣布WAKE_LOCK许可。

Calendar cal2 = Calendar.getInstance();
cal2.add(Calendar.MINUTE, 1);
PendingIntent getSqlUpdatesTimer = PendingIntent.getService(this, 0, new Intent(AlarmService.PULL_SQLUPDATES_ACTION, null, this, AlarmService.class), 0);
alarmManager.cancel(getSqlUpdatesTimer);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), 600000, getSqlUpdatesTimer);

这是我的警报服务:

public class AlarmService extends Service {
    public static final String PULL_SQLUPDATES_ACTION = "com.mycompany.AlarmService.PULL_SQLUPDATES";

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    if (intent != null) {
        if (PULL_SQLUPDATES_ACTION.equals(intent.getAction())) {
            PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
            WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
            wl.acquire();

            GetSQLUpdates retrieveSQLUpdates = new GetSQLUpdates(null);
            retrieveSQLUpdates.execute("sp_A_Get_SQLUpdates", "sp_A_Put_SQLUpdates");

            wl.release();
        }
    }
    return START_STICKY;
}
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我无法以这种方式开始,所以我使用了BroadcastReceiver代替了这个答案的服务:

Alarm Manager Example

    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);

    //set the alarms 5 minutes apart so they don't conflict.
    cal.add(Calendar.MILLISECOND,GlobalVars.timeToCheckForKillMe);

    //getSqlUpdatesTimer = PendingIntent.getService(this, 0, new Intent(AlarmService.PULL_SQLUPDATES_ACTION, null, this, AlarmService.class), 0);
    Intent i = new Intent(this, AlarmBroadcastReceiver.class);
    getSqlUpdatesTimer = PendingIntent.getBroadcast(this, 0, i, 0);
    alarmManager.cancel(getSqlUpdatesTimer);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), GlobalVars.timeToCheckForKillMe, getSqlUpdatesTimer);

上课:

public class AlarmBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{
    if (intent != null) {

            PowerManager pm = (PowerManager)context.getSystemService(context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
            wl.acquire();

            EDiaryDataSync.GetSQLUpdates retrieveSQLUpdates = new EDiaryDataSync.GetSQLUpdates(null);
            retrieveSQLUpdates.execute("sp_A_Get_SQLUpdates", "sp_A_Put_SQLUpdates");

            wl.release();
    }

}
}