2012-11-09 22 views
1

在我的应用程序旁边的启动画面我需要显示一个叫做提示页面的活动。此活动每天显示一次。当用户在24小时内再次打开应用程序时,不应显示该应用程序。android显示每24小时一个活动

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

但是这里有一个逻辑错误,如果用户在某个日期的下午11点的午夜首先打开应用程序,并且在t小时后再次打开该应用程序,则会显示Tips活动,但是我需要在显示之后显示它24小时,怎么办呢。请帮助我在这ligil

+0

邮你现在有代码的执行。 – FoamyGuy

回答

1

我想你需要这样的流程,请参阅本杰森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(); 

    } 
0

保存最后一次活动在共享pref中开始,如你在你的问题所述。然后从当前时间中减去最后一次。如果超过24小时,请出示您的提示。

1

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

要点延长android.app.Service 1.服务类应实现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(); 
    } 
} 
+0

感谢您的建议,但Jignesh Ansodariya的答案似乎是如此简单.... –