我有一个游戏,我想每隔几个小时发送一个通知,关闭应用程序而不打开它。要使这些通知不是问题,但我不知道如何计算应用程序未被使用的时间?我应该保存在App Preference类这样的本地文件中吗?或者有不同的方式吗?
例如:我玩游戏然后关闭它。我没有触摸游戏一天,然后我收到了通知"回来等等等等等等等等等等等等等等等等。
答案 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
}
希望这会对你有所帮助