У меня есть класс IntentService
, и я хочу использовать сигнал тревоги, чтобы служба выполняла определенную задачу каждые X часов.
Я получаю сигнал тревоги и устанавливаю его, но служба выполняет свою задачу каждые 2 секунды, а не каждые X часов; оно никогда не останавливается: BroadcastReceiver
всегда стреляет Intent
.
Это код:
@Override
protected void onHandleIntent(Intent intent) {
int alarmType = AlarmManager.RTC_WAKEUP;
username = intent.getStringExtra("username");
//android.os.Debug.waitForDebugger();
alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
context = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
serviceToStart = intent.getStringExtra("serviceToStart");
if (serviceToStart.equals("calls")) {
String CALLS_ALARM_ACTION = "ACTION_CALLS_LOGGING";
Intent callsIntentToFire = new Intent(CALLS_ALARM_ACTION);
callsIntentToFire.putExtra("serviceToStart", serviceToStart);
callsAlarmIntent = PendingIntent.getBroadcast(context, 0, callsIntentToFire, 0);
callsUpdatefrequency = toLong(Integer.parseInt(prefs.getString(Preferences.CALLS_FREQUENCY_PREF, "0")));
long callsTimeToUpdate = SystemClock.elapsedRealtime() + callsUpdatefrequency;
alarms.setRepeating(alarmType, callsTimeToUpdate, callsUpdatefrequency, callsAlarmIntent);
dumpCallsLog();
Последний метод (dumpCallsLog ()) - это метод, который обновляет удаленную БД.
Я что-то упускаю или что-то не так в коде?
Это мой BroadcastReceiver
код:
public class LoggingReceiver extends BroadcastReceiver {
public static final String ACTION_CALLS_LOGGING = "ACTION_CALLS_LOGGING";
@Override
public void onReceive(Context context, Intent intent) {
Intent startIntent = new Intent(context, LoggingService.class);
String action = intent.getStringExtra("serviceToStart");
startIntent.putExtra("serviceToStart", action);
context.startService(startIntent);
}
}