关闭应用程序的时间
我有一款游戏,并且我希望每隔几小时发送一次通知,以关闭该应用程序而不打开它。为了使这些通知不是问题,但我不知道如何计算应用程序未被使用的时间?我应该保存在本地文件,如应用程序偏好类吗?还是有不同的方式?关闭应用程序的时间
例如:我玩游戏,然后关闭它。我没有触及游戏一天,然后我收到通知“回来等等等等,玩等等等等”
使用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);
如果有人正在使用一直运行的服务,则无需使用Alarmmanager。处理程序更容易。 – Fasiha 2015-03-19 11:31:19
@MahaKhan服务可能会死亡......最好使用AlarmManager。 – 2015-03-19 12:41:36
如果您使用的始终运行有没有必要使用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
}
希望这将帮助你
太好了!但是,如何在有人关闭应用程序时获得时间? – user4689356 2015-03-19 12:49:56
停止监听器?或在后面按? – Fasiha 2015-03-19 13:36:29
偏好会在这里我的第一选择,简单而有效。 – 2015-03-19 11:13:25
你是否从服务器获取了关于应用程序是否连接的控制权? – eduyayo 2015-03-19 11:13:45
请参阅此问题http://stackoverflow.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service/5528441#5528441 – Signare 2015-03-19 11:16:53