2011-08-02 15 views
0

私のAndroid Appの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) { 
    } 
} 

私はアプリをアンインストールしたときにこれを行う可能性がありますが、これはあまり「優雅」ではありません。

誰も、エレガントな方法で(db​​ハンドラから、そしてアプリケーションがアンインストールされていないとき)それをやっているかどうか教えていただけますか?

EDIT: ハンドラをアプリのアンインストールに配置することはできますか?アプリをアンインストールする前にいくつかのアクションを実行することは可能ですか?

答えて

0

アプリケーションデータベースファイルは/データ/ app_package /データベースに配置されて持っていいだろうけれども

この

はエレガントで行うことはできません。アプリケーションがアンインストールされると、すべてのプライベートデータが削除されます(/ data/app_package)。アプリケーションがアンインストールされたとき、またはプライベートデータが削除されたときに通知を受け取ることはできません。簡単な回避策は、アプリケーションがkeepAliveメッセージをサーバーに送信して、サーバーがまだ生きていることを示すたびに行われます。サーバー側では、キープアライブメッセージを受け取っていないレコードを削除します。それ以上のものは ピリオドです(データによって異なります)。

  1. アプリがアンインストールされると、それのデータは、時間の1つの期間後、サーバー上で削除されます(これは、サーバーが過負荷状態にすることができます)
  2. 開始されていないアプリの場合 - あなたは二つの問題を思い付きますよ時間の期間 - サーバー上のデータが削除されます(あなたが時間の一定期間のために起動しなかった場合は、それがアンインストールされますことを考えることができます)
+0

! – theWizard

0

Androidのデータベースは実際にはファイルです。

データベース削除の検出は、最終的にです。ファイルの削除の検出onFileDelete()

+0

OK、ありがとう!回避策が可能かどうか、つまり、アンインストール時にアプリケーションの直前にいくつかのアクションを実行することを意味しますか? – theWizard

+0

http://www.xinotes.org/notes/note/1335/詳細な回答をいただきありがとうございます –

関連する問題