我需要在Android中执行一个函数或类,我可以在某些日期重置表SQLITE的某些值。
例如,星期一0点设置零值,每月1日设置为零另一个值,每年1月1日将其他值设为零。
如果没有应用程序的用户,你怎么能自动执行此操作?
答案 0 :(得分:0)
您可以使用闹钟:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Intent intent = new Intent("com.mycompany.myapp");
intent.putExtra("DoTheWork", true);
DateTime today = new DateTime().withTimeAtStartOfDay();
DateTime tomorrow = today.plusDays(1).withTimeAtStartOfDay();
pendingintentResetAlarms = PendingIntent.getBroadcast(con, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.cancel(pendingintentResetAlarms);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, tomorrow.getMillis(), 86400000, pendingintentResetAlarms);
AlarmReceiver receiver = new AlarmReceiver();
this.registerReceiver(receiver, new IntentFilter(com.mycompany.myapp));.
}
有一个接收者:
private class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
boolean bRestAlarms = bundle.getBoolean("DoTheWork", false);
if (bRestAlarms) {
//call your subbroutine here
}
}
}
}
不要忘记在onDestroy中取消注册接收器。
修改强> 使用Calendar对象查找每个星期一:
GregorianCalendar date = new GregorianCalendar();
while( date.get( Calendar.DAY_OF_WEEK ) != Calendar.MONDAY )
date.add( Calendar.DATE, 1 );
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), 7 * 24 * 60 * 60 * 1000, pendingintentResetAlarms);
您可以在第一个月的第一年获得相同的想法。