每隔n分钟再做一次x分钟

时间:2014-12-13 02:10:18

标签: java math

当用户在2分钟或之后访问特定屏幕时,我需要展示广告,然后每当他们在6分钟后再次访问时,我需要展示广告,10,14,16 ......

我有下面的代码,如果用户在分钟2,6,10,14等时访问屏幕,它可以正常工作但是如果用户错过这些分钟则它不起作用。例如,如果广告在第2分钟显示但用户直到第8分钟才回来,则会错过第6分钟的广告。

我怎样才能满足于此,如果用户在这些会议记录之外回来,他们的广告仍会显示?

long start = adStartTime;
long now = new Date().getTime();
int minsElapsedSinceLastAd = (int) ((now - start) / 1000 / 60);
showAd = previousRunMin !=minsElapsedSinceLastAd&& minsElapsedSinceLastAd % 4 == 2;
if (showAd) {
   showAd();
   ...
   previousRunMin = minsElapsedSinceLastAd;

}

previousRunMin是这样的,如果用户在同一分钟回来,广告就不会显示

2 个答案:

答案 0 :(得分:1)

考虑使用带有scheduleAtFixedRate的ScheduledThreadPoolExecutor:此处描述的调用:ScheduledExecutorService#scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)按照您的要求执行,在具有指定延迟和周期的单独线程中调度活动。也许我可以更具体地针对您的应用程序,但您的问题中包含的代码段并没有提供足够的上下文来理解被调度的活动如何工作。

答案 1 :(得分:0)

我不确定你的片段之前的代码到底是什么......我会假设它处于某种循环中。

无论哪种方式,您都可以以最简单的方式做到。如果showAd为true,则将全局布尔值设置为true。然后根据新的布尔值显示添加。另一个主要问题是没有检查用户是否真的看到了广告...

如果检查广告是否被看到,那就容易多了。如果您没有支票,那么很难知道。