GreenDaoローカルデータベースを使用して動作上の問題は、Android9.0は、データベースソリューションの読み込みに失敗しました

まず、この記事を見て、アプリケーションの互換性WAL(先行書き込みログ)のAndroid SQLiteデータベースに関するプレゼンテーション

アンドロイド9互換性のWAL(先行書き込みログ)と呼ばれる導入のSQLiteデータベースのデータベースの使用を可能にする特別なモード、journal_mode=WAL接続ごとにデータベースの最大保持挙動を維持しながら、。

アプリケーションが含まれていない限り、データベース・アプリケーションは、デフォルトの互換性WALによって有効:

  1. 呼び出すことによってSQLiteDatabase.enableWriteAheadLoggingをdisableWriteAheadLoggingオプトインログイン禁止または書き込みアヘッド
  2. 呼び出すことによってSQLiteDatabase.OpenParams.setJournalMode(String mode)、明示的な要求ログ・モード

著者:ben3726
リンクします。https://www.jianshu.com/p/9cbe3839a1e2
出典:ジェーンの本が
著者によって著作権で保護されています。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

図は、App Android9.0データベースディレクトリにデータベースのローカルコピーです。

この図は、ディレクトリの別のAndroid版です。

だから、問題は、読み取り不良や崩壊が生じ、不完全な-walファイルをデータベースアプリのデータレコードのコピーを読んだ後、

チェックオンラインソリューションの後、無効WALモードに言われて、

プロジェクトはgreenDaoパーティのライブラリを使用しているため、ここではgreenDaoソリューションを書くために、ソリューションAndroidのネイティブデータベースは類似していなければなりません。

    private void initGreenDao() {
        mHelper = new DaoMaster.DevOpenHelper(this, DB_NAME);
        db = mHelper.getWritableDatabase();
        //在初始化greenDao的地方加上这一行
        db.disableWriteAheadLogging();

        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }

導入後、次のようにアプリケーションがコンパイルされ、インストールディレクトリデータベースをデータベース

私は、あなたが無効になっWALモードを持っていることがわかります.walファイルが存在しない、アプリを開いて、問題はありません。

最後は、エミュレータとファイルをデバッグ実機を表示するには、Android Studioのデバイスファイルエクスプローラツールのアプリカタログを開く方法に掲載しました

上部のナビゲーションバーは、Android Studio3.5バージョンに続いて開き、[表示 ]> [ - ツールのWindows - > [  デバイスのファイルエクスプローラ

オーバー!

公開された16元の記事 ウォン称賛14 ビュー10000 +

おすすめ

転載: blog.csdn.net/i996573526/article/details/104717925