SQLite大小每天都在增加甚至没有内容

时间:2014-05-29 07:50:22

标签: android sql sqlite

我有一个疑问 - 我正在使用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"

将释放所有表的所有未使用空间,这意味着 - “它将清理我的整个数据库”,之后它将提交此查询。现在的问题是 - 无论我在这里做什么,它都能满足我的要求吗?这项服务将为我做清理任务。任何建议都非常感谢。感谢所有人。

0 个答案:

没有答案