onUpgrade não está sendo chamado pela primeira vez no android SQLiteOpenHelper

Estou enfrentando um problema muito estranho. Eu estou desenvolvendo um aplicativo android que tem um banco de dados sqlite como seu banco de dados. Eu estou usando a classe DBAdapter que estende SQLiteOpenHelper. Eu pesquisei na internet, mas não consigo encontrar uma solução.

Aqui está minha classe SQLiteOpenHelper

public class DBAdapter  extends SQLiteOpenHelper{

         private static DBAdapter mInstance = null;
        /**The Android's default system path of your application database. */
        private static String DB_PATH = "/data/data/com.mydbapp.android/databases/";

        private final static String DB_NAME = "mydb.sqlite";
        private static final int DATABASE_VERSION = 1;
        private static Context myContext;    


        public static DBAdapter getInstance(Context ctx) {

            if (mInstance == null) {
                mInstance = new DBAdapter(ctx);
            }
            return mInstance;
          }
            private DBAdapter(Context context) {     
                super(context,  DB_NAME, null, DATABASE_VERSION);
                DBAdapter.myContext = context;
                     DB_PATH = "/data/data/" +
                             context.getPackageName()+
                "/databases/"; 
            }   

           public void deleteDB()
           {
               myContext.deleteDatabase(DB_NAME);
           }

            public void createDataBase() throws IOException{     
                boolean dbExist = checkDataBase();  
                if(dbExist )
                {
                   this.getWritableDatabase();
                }
                if(!dbExist){
                    this.getReadableDatabase();
                    try {     
                        copyDataBase();
                    } catch (IOException e) {     
                        e.printStackTrace();
                        throw new Error("Error copying database");     
                    }
                }
            }

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
            {
                if (newVersion > oldVersion)
                {
                            System.out.println("DB Upgrade logic")
                        }
            }

Agora quando eu mudoprivate static final int DATABASE_VERSION = 2; entãoonUpgrade() método não é invocado, mas quando eu mudoprivate static final int DATABASE_VERSION = 3; então onUpgrade () funciona. Então, minha pergunta é por que não invoca oonUpgrade() método quando altero a versão do banco de dados de 1 para 2. Por favor me ajude a resolver esse problema.

Editar 1

Eu notei mais um comportamento estranho. Quando executo inicialmente o aplicativo com a versão 1 do banco de dados e, novamente, instalo o aplicativo com a versão sã do banco de dados (1) e, agora, se alterar a versão 1 para 2 do banco de dados, será chamado onUpgrade (). O que eu quero dizer é que eu tenho que instalar o aplicativo 2 vezes com a mesma versão do banco de dados, em seguida, se eu mudar a versão do banco de dados, onUpgrade () é chamado.

questionAnswers(3)

yourAnswerToTheQuestion