应用程序关闭的时间

时间:2015-03-19 11:08:48

标签: android time notifications

我有一个游戏,我想每隔几个小时发送一个通知,关闭应用程序而不打开它。要使这些通知不是问题,但我不知道如何计算应用程序未被使用的时间?我应该保存在App Preference类这样的本地文件中吗?或者有不同的方式吗?

例如:我玩游戏然后关闭它。我没有触摸游戏一天,然后我收到了通知"回来等等等等等等等等等等等等等等等等。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

        }

希望这会对你有所帮助