我希望我的应用开始活动“播放”,当用户仅在指定时间处于活动“开始”时,假设17:00:00,如果用户处于活动中,则在其他任何时间开始17:00:00之后,活动“播放”不会开始。我使用了这段代码:
Calendar calendar = Calendar.getInstance();
calendar.set(2019, 2, 25, 17, 00,00);
Intent intent = new Intent(Start.this, Playing.class);
PendingIntent pendingIntent = PendingIntent.getActivity(Start.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
问题是,我需要在17:00:00之后的任何时间“玩”活动。 我应该怎么做才能将其限制为仅指定的确切时间?
答案 0 :(得分:0)
您可以从警报管理器启动Service
,而不是开始活动。然后在您的Service
中,检查您的活动Start
是否处于前台,并且正好是17:00:00。并且,如果条件满足,则只能从该服务开始您的活动。
以下是用于检查是否有任何活动处于前台的代码。
public boolean isForeground(String myPackage) {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1);
String className = runningTaskInfo.get(0).topActivity.componentInfo.getClassName();
return className.equals(YourActivityClassName);
}
答案 1 :(得分:0)
我只是将代码放入当前时间小于所需时间的条件内。