2011-08-02 158 views
0

我的Android應用程序的sqlite與後端服務器數據庫同步。 我希望當由於某種原因刪除數據庫(例如,應用程序被卸載)來更新我的服務器,他應該從其表中刪除行。 我正在尋找某種處理程序,但我找不到像onDatabaseDelete()。android如何處理數據庫刪除?

private static class DatabaseHelper extends SQLiteOpenHelper { 

    DatabaseHelper(Context context) { 
     super(context, DBAdapter.DATABASE_NAME, null, DBAdapter.DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    } 
} 

我想作爲一種解決方法,我可以做到這一點,當應用程序被卸載,但這不是「優雅」。

任何人都可以請告訴我,如果有一種方式,以優雅的方式(從數據庫處理程序,而不是當應用程序被卸載)嗎?

編輯: 是否有可能把一個處理程序的應用程序卸載?是否可以在應用程序卸載之前運行一些操作?

回答

0

應用程序的數據庫文件位於/數據/ app_package /數據庫。卸載應用程序時,所有私人數據都將被刪除(/ data/app_package)。當應用程序卸載或私人​​數據被刪除時,您將無法收到通知。每當應用程序開始向服務器發送keepAlive消息以表明它仍然存在時,一個簡單的解決方法就是。在服務器端,您將刪除您沒有收到keepAlive消息的記錄,這些消息多於期間(取決於您的數據)。你會拿出兩個問題 -

  1. 當應用程序的一個時間期間後卸載它的數據將在服務器上刪除(這可以重載服務器)
  2. 對於應用程序未啓動爲一段時間 - 服務器上的數據將被刪除(如果你沒有啓動的時間定期間你可以認爲它卸載)
+0

感謝您的詳細解答! – theWizard

0

Android的數據庫實際上是一個文件。

檢測數據庫刪除最終是檢測文件刪除

這不可能在一個優雅的完成,雖然這將是不錯的onFileDelete()

+0

好的,謝謝!你知道解決方法是否可行,也就是說,在應用程序卸載之前執行一些操作? – theWizard

+0

http://www.xinotes.org/notes/note/1335/這並不容易 –