2015-03-19 3 views
0

У меня есть игра, и я хочу отправить уведомление каждые несколько часов, когда приложение было закрыто, не открывая его. Чтобы эти уведомления не были проблемой, но я понятия не имею, как подсчитать время, когда приложение не использовалось? Должен ли я сохранять в локальном файле, таком как класс предпочтений приложений? Или есть другой способ?Время, когда приложение было закрыто

Например: я играл в игру, а затем закрыл ее. Я не касался игры на один день, а затем получил уведомление «Возвращайся бла-бла и играй в бла-бла»

+0

Preferences будет моим первым выбором здесь, простым и эффективным. –

+0

У вас есть какой-либо контроль с сервера, связано ли приложение или нет? – eduyayo

+0

см. Http://stackoverflow.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service/5528441#5528441 – Signare

ответ

0

Используйте AlarmManager для установки тревоги при выходе из приложения, которое вы получите в своем классе приемника, например код ниже

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ALARM_ID_XYZ, new Intent(
         FILTER_TIME_ABC), PendingIntent.FLAG_UPDATE_CURRENT); 

       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1*60*60*1000, 1*60*60*1000, pendingIntent); 

И на вашем запуске приложения отменить все сигналы тревоги, используя ниже код:

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ALARM_ID_XYZ, new Intent(
         FILTER_TIME_ABC), PendingIntent.FLAG_UPDATE_CURRENT); 
alarmManager.cancel(pendingIntent); 
+0

Если кто-то пользуется службой, которая всегда работает, нет необходимости использовать Alarmmanager. Обработчик проще. – Fasiha

+0

@MahaKhan Services может быть убит ... лучше использовать AlarmManager. –

0

Если вы используете сервис, который всегда работает, нет никакой необходимости использовать Alarmmanager. Обработчик проще. Использовать общие настройки и некоторые вычисления.

// Calendar.getInstance().getTime() This is previous time 

       Date prevTime = Calendar.getInstance().getTime(); 
       Date currentTime = null; 
       SimpleDateFormat formatter = new SimpleDateFormat(
         "EEE MMM dd HH:mm:ss zzzz yyyy"); 
       currentTime = formatter.parse(get value from share preference); 

       if (((prevTime.getTime() - currentTime.getTime()) 
         /(60 * 1000) % 60) < 30) 
        { 
    //Call Your function 

     } 

Надеется, что это поможет вам

+0

Это здорово! Но как мне получить время, когда кто-то закрывает приложение? – user4689356

+0

на слушателе остановки? или на заднем прессе? – Fasiha

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