Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否在安装apk时执行特定操作?_Android_Database Schema_Android Install Apk - Fatal编程技术网

Android 是否在安装apk时执行特定操作?

Android 是否在安装apk时执行特定操作?,android,database-schema,android-install-apk,Android,Database Schema,Android Install Apk,我已经更新了应用程序的数据库。但从市场上更新应用程序的用户在每次启动应用程序时都会看到崩溃,因为新数据库结构与旧数据库不兼容。要求他们卸载并安装应用程序并不好,我需要在安装时只执行一次操作,即清除旧数据库并创建新数据库。这不应该在每次应用程序启动时调用,只在安装时调用..或者当应用程序第一次启动时调用 我想我已经明确了我的处境,现在我该怎么办?我应该让用户卸载并安装应用程序,还是按照我的要求去做 只需更改数据库的版本,并覆盖DatabaseHelper类上的onUpgrade priva

我已经更新了应用程序的数据库。但从市场上更新应用程序的用户在每次启动应用程序时都会看到崩溃,因为新数据库结构与旧数据库不兼容。要求他们卸载并安装应用程序并不好,我需要在安装时只执行一次操作,即清除旧数据库并创建新数据库。这不应该在每次应用程序启动时调用,只在安装时调用..或者当应用程序第一次启动时调用


我想我已经明确了我的处境,现在我该怎么办?我应该让用户卸载并安装应用程序,还是按照我的要求去做

只需更改数据库的版本,并覆盖
DatabaseHelper
类上的
onUpgrade

    private static final int DATABASE_VERSION = 2;

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
                + ", which will destroy all old data");

        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATION);
        onCreate(db);
    }

只需更改数据库的版本,并覆盖
DatabaseHelper
类上的
onUpgrade

    private static final int DATABASE_VERSION = 2;

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
                + ", which will destroy all old data");

        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATION);
        onCreate(db);
    }

为什么不实现
SQLiteOpenHelper
的方法呢? 此类提供了有用的
onCreate()
onUpgrade()
方法

请看这里:


或者在这里:

为什么不实现
SQLiteOpenHelper
的方法呢? 此类提供了有用的
onCreate()
onUpgrade()
方法

请看这里:


或者在这里:

首先,清除旧数据库并创建一个新数据库确实是个坏主意(用户看到这些数据丢失会非常恼火)

您应该始终尝试使用新列和内容升级以前的数据。您应该始终尝试在不清除数据的情况下更改表的结构,而不是清除整个数据


还有一件事是,您可以在DBHelper类的onUpgrade()方法中升级到新数据库。

首先,清除旧数据库并创建新数据库是一个非常糟糕的主意(用户看到数据丢失会非常恼火)

您应该始终尝试使用新列和内容升级以前的数据。您应该始终尝试在不清除数据的情况下更改表的结构,而不是清除整个数据


还有一件事,您可以在DBHelper类的onUpgrade()方法中升级到新的数据库。

将更新数据库版本变量,但在表的创建中会发生什么?我在onCreate()中创建的所有表都将更新数据库版本变量,但是在表的创建中会发生什么呢?我在onCreate()中创建的所有表?