2013-05-10 19 views
10

Chcę utworzyć powiadomienie każdego dnia o 8:00 rano. Mam dane w bazie danych SQLite i każdego dnia w tym czasie chcę pobrać z niej dane i utworzyć z niego powiadomienie. Utworzenie nowego powiadomienia nie stanowi problemu, ale jak mogę go wyświetlać codziennie o tej porze?Utwórz powiadomienie każdego dnia.

Myślę, że muszę pracować z usługą, ale jak mogę powiedzieć systemowi, aby uruchomić tę usługę w specjalnym momencie? Jakiego rodzaju usługi powinienem używać? Myślę, że jeśli system wywołuje usługę, uruchamia określoną funkcję, w której mogę uruchomić mój kod, aby połączyć się z bazą danych i utworzyć i wysłać moje powiadomienie do systemu, prawda?

Czego nie mogę zrozumieć, jeśli zarejestruję usługę w mojej głównej działalności, dlaczego system może uruchomić usługę, jeśli użytkownik zamknie moją aplikację? Czy ktoś może mi to wyjaśnić? Zawsze myślę, że jeśli moja główna działalność zostanie zniszczona, usługa również zostanie zniszczona.

+2

Użyj programu alarmManager. – wtsang02

+0

http://stackoverflow.com/questions/4430849/how-to-set-recurring-alarmmanager- to-execute-code-daily –

+0

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-scheduling -recurring-tasks/ –

Odpowiedz

6

Użyj klasy Alarm manager i umieść powiadomienie w klasie NotifyService. Spowoduje to ustawienie alarmu o 8 rano każdego dnia:

Intent myIntent = new Intent(Current.this , NotifyService.class);  
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
pendingIntent = PendingIntent.getService(ThisApp.this, 0, myIntent, 0); 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 08); 
calendar.set(Calendar.MINUTE, 00); 
calendar.set(Calendar.SECOND, 00); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pendingIntent); //set repeating every 24 hours 
+0

Mam te same ustawienia, ale otrzymuję powiadomienie co godzinę zamiast raz dziennie. – Roon13

+0

To zadziała, dopóki użytkownik nie uruchomi ponownie swojego telefonu. Aby zachować działanie aplikacji AlarmManager nawet po ponownym uruchomieniu komputera, sprawdź ten post http://stackoverflow.com/questions/12512717/android-alarmmanager-after-reboot –

+1

To samo tutaj ... Nie wysyła raz dziennie, ale za każdym razem otwieram aplikację – Si8

2

Nie potrzebujesz serwera. Myślę, że najlepszym sposobem wdrożenia tego jest użycie AlarmManager.

Alarm Manager Example

+0

zmiana literówki AlertManager na AlarmManager –

Powiązane problemy