在捕获日期操作方面,我需要您的帮助。请注意,当您阅读所有提到的时间戳时,都是系统时间,而不是互联网时间,而且我不允许以任何方式使用互联网时间。
基本上我有两个时间戳(包括日期),一个是当前系统时间,第二个是从时间戳数据库中获取的日期,它是文件的下载时间戳。此外,我的应用程序需要每 30 天下载一次此文件
例如:来自数据库的时间戳或上次下载日期:25/02/2012 当前日期:15/03/2012 下一个下载日期将在:27/03/2012。
我的挑战是我想在这 30 天的窗口内停止/捕获对日期的操作,所以假设用户意识到应用程序将在 2012 年 3 月 27 日更新,他进入他/她的日期和时间设置并不断倒带时间是为了永远不允许日期从 2012 年 3 月 27 日开始,例如将当前日期(2012 年 3 月 15 日)倒回到 2012 年 3 月 3 日,这意味着他“回到了 12 天”。
有什么想法/建议吗?
任何帮助表示赞赏!
嗨 Class Stacker,下面是我创建计时器的尝试,但我有点不确定按照您的建议放置支票的位置。我已经将伪代码放在我认为应该在计时器中运行检查的地方。
这是我的 AlarmManagerActivity:
public class AlarmManagerActivity extends Activity {
private AlarmManagerBroadcastReceiver alarm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
alarm = new AlarmManagerBroadcastReceiver();
}
@Override
protected void onStart() {
super.onStart();
}
public void startRepeatingTimer(View view) {
Context context = this.getApplicationContext();
if(alarm != null){
alarm.SetAlarm(context);
}else{
Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
}
这是我的广播接收器:
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
final public static String ONE_TIME = "onetime";
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AlarmManagerBroadcastReceiver");
//Acquire the lock
wl.acquire();
//You can do the processing here.
Bundle extras = intent.getExtras();
StringBuilder msgStr = new StringBuilder();
if(extras != null && extras.getBoolean(ONE_TIME, Boolean.FALSE)){
//Make sure this intent has been sent by the one-time timer button.
msgStr.append("One time Timer : ");
}
Format formatter = new SimpleDateFormat("hh:mm:ss a");
msgStr.append(formatter.format(new Date()));
Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
// SHOULD THE CODE TO CHECK SYSTEM TIME AGAINST THE CORRECT TIME BE PLACED HERE ??
// CURRENTLY I'M DISPLAYING A TOAST
// THANKS FOR ANY HELP
//Release the lock
wl.release();
}
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
//After after EVERY HR
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 30 , pi);
}
}
谢谢 !!!!