2017-03-06 5 views
0

Ich benutze einen Alarm, um den Dienst alle 15 Tage einmal zu starten. Der Alarm wird bei der ersten Installation ausgelöst. Alle 15 Tage einmal Alarm auslösen diesen Dienst ordnungsgemäß, aber zum Zeitpunkt der Auslösung des Alarms der Dienst gestartet.Ich möchte nicht den Dienst zum Zeitpunkt der Installation zu starten. wie man das stoppt. Ich nicht, ob ich falsches Format verwende?Alarm wird beim ersten Mal automatisch ausgelöst Alarm einstellen

Hinweis: Abgesehen von dieser Bedingung, bin ich nirgendwo Start Service.

Intent intent = new Intent(context, InitiateService.class); 
    PendingIntent pIntent = PendingIntent.getService(context, 12345, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15 * AlarmManager.INTERVAL_DAY, pIntent); 

das, was ich in Manifest-Datei verwendet.

<service android:name=".service.InitiateService" /> 

dies ist mein Code Alarm auszulösen einmal bei jedem 15 Tage Dienst starten.

Jungs Wenn jemand in meiner Frage etwas falsch gefunden hat, Entschuldigt mich und bitte korrigieren Sie diese Fehler und antworte mir.

+0

post Ihren Code für weitere Untersuchung – Noorul

+0

@Ahamed danke für Ihre Antwort Kumpel. Ich poste bereits meinen Code. ob es nicht genug ist? – Palanivelraghul

Antwort

1

es ist, weil Sie System.currentTimeMillis verwendet()

dieses

System.currentTimeMillis versuchen() * (15 * AlarmManager.INTERVAL_DAY)

alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()*(15 * AlarmManager.INTERVAL_DAY), 15 * AlarmManager.INTERVAL_DAY, pIntent); 
+0

Vielen Dank für Ihre Antwort, Alter, ich werde versuchen, Sie wissen zu lassen – Palanivelraghul

+0

Sorry, Alter. Es funktioniert nicht. Wieder begann es sofort. – Palanivelraghul

+0

ok, aber es sollte funktionieren Problem gibt es bei System.currentTimeMillis(), weil Sie Alarm bei der aktuellen Zeit auslösen –

1

@Mehul Gajjar ist korrekt über System.currentTimeMillis()

System.currentTimeMillis() gesetzt Alarm zu aktueller Zeit, so wird Ihr Dienst sofort starten:

so könnten Sie

System.currentTimeMillis() 

mit

(15 * 24 * 60 * 60 * 1000 * System.currentTimeMillis()) 

Erklärung ersetzen wollen. Alarmeinstellung nach 15 Tagen löst Ihr Problem. 15 * 24 * 60 * 60 * 1000 entspricht 15 Tagen. Multiplizieren mit aktuellen Meilen wird Ihnen die aktuelle Zeit nach 15 Tagen geben.

in kurzen würde Ihr Code wie sein

alarm.setRepeating(AlarmManager.RTC_WAKEUP, (15 * 24 * 60 * 60 * 1000 * System.currentTimeMillis()), 15 * AlarmManager.INTERVAL_DAY, pIntent); 

Ich hoffe, dies wird Ihnen helfen.

+0

danke für deine antwort dude. Ich werde es noch einmal überprüfen und Sie wissen lassen. – Palanivelraghul

+0

Entschuldigung, immer noch wird es zum ersten Mal wieder initiiert. – Palanivelraghul

+0

können Sie mir bitte zeigen, wie Sie Ihren Service initialisieren? –