Android 应用程序关闭的时间

Android 应用程序关闭的时间,android,time,notifications,Android,Time,Notifications,我有一个游戏,我想每隔几个小时发送一个通知,说明该应用程序已关闭而未打开。发出这些通知不是问题,但我不知道如何计算应用程序未被使用的时间?我应该像应用程序首选项类一样保存在本地文件中吗?还是有不同的方法 例如:我玩了这个游戏,然后关闭了它。我有一天没有碰游戏,然后我收到一个通知“回来胡说八道,玩胡说八道”当你退出你的应用程序时,使用AlarmManager设置警报,你将在你的receiver类中收到警报,如下代码所示 AlarmManager alarmManager = (AlarmManag

我有一个游戏,我想每隔几个小时发送一个通知,说明该应用程序已关闭而未打开。发出这些通知不是问题,但我不知道如何计算应用程序未被使用的时间?我应该像应用程序首选项类一样保存在本地文件中吗?还是有不同的方法


例如:我玩了这个游戏,然后关闭了它。我有一天没有碰游戏,然后我收到一个通知“回来胡说八道,玩胡说八道”

当你退出你的应用程序时,使用AlarmManager设置警报,你将在你的receiver类中收到警报,如下代码所示

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。处理程序更简单。 使用共享首选项和类似的计算

  // 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

        }
//Calendar.getInstance().getTime()这是上一次
Date-prevTime=Calendar.getInstance().getTime();
日期当前时间=空;
SimpleDataFormat格式化程序=新SimpleDataFormat(
“EEE MMM dd HH:mm:ss zzzz yyyy”);
currentTime=formatter.parse(从共享优先权中获取值);
if(((prevTime.getTime()-currentTime.getTime())
/ (60 * 1000) % 60) < 30)
{
//调用你的函数
}

希望这能帮助你在这里优先选择我的首选,简单有效。你有没有从服务器上控制应用程序是否被连接了?请参考这个“我想每隔几个小时发送一个通知”->请考虑UX方面的事情。如果每隔几个小时我就收到一次催人的通知,我会卸载这样的应用程序,不管它实际上有多好,我相信大多数人也会这样做。@2当然会的。不打算每隔几个小时做一次,但如果不使用,大约每两天做一次。如果有人使用的服务总是在运行,则无需使用Alarmmanager。处理程序更简单。@MahaKhan服务可能会被杀死…最好使用AlarmManager。太棒了!但是,当有人关闭应用程序时,我如何获得时间?在停止侦听器上?还是背压?