-1
如何實現定期查詢數據庫並定期刪除行的任務?我想這樣做,以便防止我的數據庫隨着時間的推移變得太大。如何實現定期查詢數據庫並定期刪除行的任務?
如何實現定期查詢數據庫並定期刪除行的任務?我想這樣做,以便防止我的數據庫隨着時間的推移變得太大。如何實現定期查詢數據庫並定期刪除行的任務?
使用粘滯Service
與AlarmManager
和BroadcastReceiver
是你所需要的。
public class MY_SERVICE extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// remove last alarm you set
Intent intent = new Intent(context, MY_DB_PROCEDURE_BROADCAST.class);
intent.setAction("myDbProcedure");
PendingIntent alarmIntent = PendingIntent.getBroadcast(context,1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmMgr.cancel(alarmIntent);
// add new alarm manager
intent = new Intent(context, MY_DB_PROCEDURE_BROADCAST.class);
intent.setAction("myDbProcedure");
alarmIntent = PendingIntent.getBroadcast(ct, 1, intent, 0);
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(),
intervalMin*60*1000, alarmIntent);
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
您BroadcastReceiver
類:
public class MY_DB_PROCEDURE_BROADCAST extends BroadcastReceiver {
private final String TAG=getClass().getName();
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"Started");
// DO YOUR DB TASK HERE
}
}
在您的清單定義服務和廣播接收器:
<service
android:name="MY_SERVICE"
android:enabled="true"
android:exported="true" />
<receiver android:name="MY_DB_PROCEDURE_BROADCAST" android:enabled="true"/>
使用alaramManger和服務意向做週期性的工作。如果你想要代碼,那麼我給你完整的代碼。 –