我怎么能在android中自动更改数据库sqlite中的值?

时间:2016-04-14 17:33:59

标签: android sqlite date datetime reset

我需要在Android中执行一个函数或类,我可以在某些日期重置表SQLITE的某些值。
例如,星期一0点设置零值,每月1日设置为零另一个值,每年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);

您可以在第一个月的第一年获得相同的想法。