我有一个疑问 - 我正在使用SQLite数据库为Android平台的某些ERP项目。在SQLite数据库中,我只存储最后30天的数据,其余的将同步到服务器的数据库。现在发出=>在我的SQLite数据库中,任何表都没有超过30行,但它的大小仍在逐日增加。所以为了解决这个问题,我写了一个服务,将在一周内运行一次,这个服务将为我做数据库清理我正在做这些事情
public class AppServiceDBClean extends WakefulIntentService {
int TEN_MINUTES = 10*60*1000;
public AppServiceDBClean() {
super("AppService");
}
@Override
protected void doWakefulWork(Intent intent) {
// Toast.makeText(getApplicationContext(), "App services", 50000).show();
System.out.println("service for database clean ");
try {
doCleanUPDB();
}
catch (Exception e) {
Log.e("AppService", "Exception appending to log file", e);
}
}
public boolean IsSyncTriggered() {
boolean isActive = false;
AccountManager am = AccountManager.get(getBaseContext());
Account[] ac = am.getAccountsByType(Constants.ACCOUNT_TYPE);
if (ac.length > 0) {
isActive = ContentResolver.isSyncActive(ac[0], Constants.AUTHORITY);
}
return isActive;
}
public void doCleanUPDB(){
/**
* Create some basic instance of database interaction
*/
SQLiteDatabaseWrapper databaseInstance = mycutomclass .getDatabase();
String sql = "VACUUM;" ;
if(!IsSyncTriggered()){
databaseInstance.execSQL(sql);
databaseInstance.setTransactionSuccessful();
databaseInstance.endTransaction();
}else{
/**
* If the sync is in progress
* wait for 10 minutes and try again
* */
try {
Thread.sleep(TEN_MINUTES);
} catch (InterruptedException e) {
Log.d("DataCleaningService","SleepException ",e);
e.printStackTrace();
}
}
}
}
现在我想要那个
"VACUUM"
将释放所有表的所有未使用空间,这意味着 - “它将清理我的整个数据库”,之后它将提交此查询。现在的问题是 - 无论我在这里做什么,它都能满足我的要求吗?这项服务将为我做清理任务。任何建议都非常感谢。感谢所有人。