即使在调用AlarmManager.cancel(pendingIntent)之后警报也没有停止

时间:2018-04-25 20:44:20

标签: android service broadcastreceiver alarmmanager alarm

我有这个局部变量:

    private void startNetWatcher(){ //runs every 30 seconds
    Log.i(TAG, "starting Net Watcher");
    Intent alarm = new Intent(getApplicationContext(), NetWatcher.class);
    boolean alarmRunning = (PendingIntent.getBroadcast(getApplicationContext(), alarmId, alarm, PendingIntent.FLAG_NO_CREATE) != null);
    if(!alarmRunning) {
        Log.i(TAG, "alarm not running");
        if (pendingIntent == null)
            pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), alarmId, alarm,  PendingIntent.FLAG_UPDATE_CURRENT);
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 15000, pendingIntent);
    }
}

这是我开始发出警报

       private void stopNetWatcher(){
    Log.i(TAG, "stopping net watcher because app is on front: " + alarmId);
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent alarm = new Intent(getApplicationContext(), NetWatcher.class);
    if (pendingIntent==null)
        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), alarmId, alarm,  PendingIntent.FLAG_UPDATE_CURRENT);
    try {
        alarmManager.cancel(pendingIntent);
        pendingIntent.cancel();
        Log.i(TAG, "intent stopped");
    }catch (Exception e){
        Log.e(TAG, e.toString());
    }
}

警报工作正常,这里是我停止"的代码。警报(或至少尝试)。但是它不起作用,因为它仍然运行我停止警报时应该停止的服务。

String

0 个答案:

没有答案
相关问题