android如何处理数据库删除?

时间:2011-08-02 11:37:05

标签: android sqlite

我的Android应用程序的sqlite与后端服务器数据库同步。 我希望在由于某种原因(例如,卸载app)删除数据库时更新我的​​服务器,他应该从其表中删除行。 我正在寻找某种处理程序,但我找不到像onDatabaseDelete()这样的东西。

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) {
    }
}

我想作为一种解决方法,我可以在卸载应用程序时执行此操作,但这不那么“优雅”。

有人可以告诉我是否有一种优雅的方式(从数据库处理程序而不是在卸载应用程序时)?

修改 可以在应用程序卸载上放置处理程序吗?是否可以在卸载应用程序之前运行一些操作?

2 个答案:

答案 0 :(得分:0)

Android的数据库实际上是一个文件。

检测数据库删除最终检测文件删除

虽然拥有onFileDelete()

会很高兴,但这不是优雅的

答案 1 :(得分:0)

应用程序数据库文件位于/ data / app_package / databases。卸载应用程序时,将删除所有私有数据(/ data / app_package)。卸载应用程序或删除私有数据时,您无法收到通知。每次应用程序开始向服务器发送keepAlive消息以指示它仍然存在时,一个简单的解决方法。在服务器端,您将删除未收到keepAlive消息的记录,其中包含期间(取决于您的数据)的更多信息。你会遇到两个问题 -

  1. 当卸载应用程序时,数据将在一个期间之后在服务器上删除(这可能导致服务器过载)
  2. 对于未在期间时间内启动的应用 - 服务器上的数据将被删除(如果您没有启动给定期间的时间你可以认为它已经卸载了)