android每24小时显示一次活动

时间:2012-11-09 02:46:19

标签: android

在我的应用程序旁边的启动画面中,我需要显示一个名为Tips Page的活动。此活动将在一天内显示一次。当用户在24小时内再次打开应用程序时,不应显示该应用程序。

首先,我尝试根据当前日期显示,当第一个显示的活动为store the current date in shared preference时,下次应用程序打开时,check是否current date and date in shared preference are equal or not。如果相等,我将不会显示活动,如果不是,我将显示活动。

但是这里有一个逻辑错误,如果用户在某个日期的晚上11点的午夜首先打开应用程序,并在t小时后再次打开应用程序将显示提示活动,但我需要在24小时后显示它小时,怎么办呢。请帮我解决这个问题

3 个答案:

答案 0 :(得分:1)

Android应用程序可以使用android.os.Handler&运行定期计时器。 java.lang.Runnable类。简单的例子如下所示。

要点 1.扩展android.app.Service的服务类应该实现onBind,onCreate& onDestroy,生命周期方法。 2. periodicTask是Runnable实现的一个实例,它运行一个Thread。执行run()将打印消息“Awake”。 3. mHandler是Handler的一个实例,它附加了periodicTask线程。 4.通过postDelayed通知处理程序每​​分钟执行一次该线程。 5.当服务被销毁时,通过调用removeCallbacks从处理程序中删除periodicTask实例。

示例代码

public class PeriodicTimerService extends Service {
    private Handler mHandler = new Handler();
    public static final int ONE_DAY = 86400000;
    private Runnable periodicTask = new Runnable() {
        public void run() {
            Log.v("PeriodicTimerService","Awake");
            mHandler.postDelayed(periodicTask, ONE_DAY );
        }
    };

   @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        mHandler.postDelayed(periodicTask, ONE_DAY );
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacks(periodicTask);
        Toast.makeText(this, "Service onDestroy() ", Toast.LENGTH_LONG).show();
    }
}

答案 1 :(得分:1)

我认为你需要这样的流程,看看Jason Hessley的答案的实施

 SharedPreferences settings = getSharedPreferences("Preferences",
            MODE_PRIVATE);

    long timeFromPrefs = settings.getLong("time", System.currentTimeMillis());
    final long TIME_DIFF = 24*60*60*1000; 


    if ((System.currentTimeMillis()-timeFromPrefs)>TIME_DIFF) {
        // show Activity...........
        Editor editor = settings.edit();
        editor.putLong("time", System.currentTimeMillis());
        editor.commit();

    } 

答案 2 :(得分:0)

如您在问题中所述,保存上次在共享首页中启动活动的时间。然后从当前时间减去最后一次。如果超过24小时,请显示您的提示。