每当我应用程序中的数据库的较旧版本替换应用程序的现有版本时,我都需要覆盖onDowngrade方法,以便调用onDowngrade()

即(较新版本的db)
例:
当我尝试使用数据库版本3安装新应用程序时,将使用数据库版本2替换当前或已安装的应用程序,但从未调用此onDowngrade方法。

我希望我的问题很清楚。请通过回答这个问题来给这个方法一些想法。

我的新版本应用程序源代码:

public class MyDatabase extends SQLiteOpenHelper
    {
        private static final int DB_VERSION     =   10;

        public MyDatabase(Context context)
        {
            super(context, DB_NAME, null, DB_VERSION);
        }
       @Override
       public void onCreate(SQLiteDatabase db)
        {
            Log.d("Method","onCreate called");

                .....
                .....
                .....

        }
     @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            Log.d("Method","onUpgrade called");
                 .....
                 .....
                 .....
        }
        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
        Log.d("Method","onDowngrade called");
                 .....
                 .....
                 .....
        }

}


Manifest.xml

版本代码:10

我的旧版应用程序源代码:

 public class MyDatabase extends SQLiteOpenHelper
    {
        private static final int DB_VERSION     =   9;

        public MyDatabase(Context context)
        {
            super(context, DB_NAME, null, DB_VERSION);
        }
       @Override
       public void onCreate(SQLiteDatabase db)
        {
            Log.d("Method","onCreate called");

                .....
                .....
                .....

        }
     @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            Log.d("Method","onUpgrade called");
                 .....
                 .....
                 .....
        }
        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
        Log.d("Method","onDowngrade called");
                 .....
                 .....
                 .....
        }

}


Manifest.xml

版本代码:9

最后,我的查询再次是我用旧应用程序替换了新应用程序(旧应用程序具有上述相应的源代码)。

但是较旧版本的应用程序不会调用onDowngrade()

最佳答案

找到了这个特定问题的答案。

在我的AndroidManifest.xml文件中,minSdkVersion为8,如下所示,并且从不调用onDowngrade()。

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />


,但是仅当minSdkVersion必须大于或等于11时,才会调用onDowngrade方法,如下所示。

解:

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

07-26 09:41