2015-04-13 2 views
0

У меня есть приложение для Android для Android. Я хочу показать локальные уведомления пользователю за день до начала мероприятия.Как запускать локальные уведомления за день до события из-за Android

Я проверил AlarmManager, широковещательные приемники и службы, но у меня нет четкого понимания их.

Можете ли вы указать мне правильное направление? Мне нужно постоянно сканировать в моей SQLite DB, если у меня есть события на завтра, чтобы сообщить пользователю, даже если приложение не находится на переднем плане.

+0

Вы можете попробовать использовать TimerTask. –

ответ

0

Вы можете легко планировать задачи с помощью TimerTask Java. Я вытащил следующий пример кода из this tutorial

public class JavaReminder { 
Timer timer; 

public JavaReminder(int seconds) { 
    timer = new Timer(); //At this line a new Thread will be created 
    timer.schedule(new RemindTask(), seconds*1000); //delay in milliseconds 
} 

class RemindTask extends TimerTask { 

    @Override 
    public void run() { 
     System.out.println("ReminderTask is completed by Java timer"); 
     timer.cancel(); //Not necessary because we call System.exit 
     //System.exit(0); //Stops the AWT thread (and everything else) 
    } 
} 
//Do this in your launch activity, or a class specified in androidmanifest to run immediately 
public static void main(String args[]) { 
    System.out.println("Java timer is about to start"); 
    JavaReminder reminderBeep = new JavaReminder(5); 
    System.out.println("Remindertask is scheduled with Java timer."); 

} 

}

Подробнее: http://javarevisited.blogspot.com/2013/02/what-is-timer-and-timertask-in-java-example-tutorial.html#ixzz3XCtfeJwc

Отслеживание времени на самом деле не является тривиальной задачей. Вам не нужно постоянно смотреть на свою базу данных sqlite, просто получить ее один раз и обновить ее в своем приложении. Я рекомендую не использовать Системное время, потому что это может измениться; вместо этого попробуйте вытащить время из Интернета. Я рекомендую joda time для расчета времени.

+0

и работает, даже если приложение не работает? –

+0

Если вы хотите, чтобы он запускался, когда приложение неактивно, вы должны запустить его в службе –

+0

Это то, что я делал раньше, но я просто нашел это. Возможно, есть лучшее решение, которое мое использование AlarmManager http://vikinghammer.com/2012/04/22/android-use-alarmmanager-instead-of-a-service-with-a-timertask/ –

Смежные вопросы