-1

onCreate()いくつかの不適切な決定のために、私はSQLiteOpenHelperクラスで最大 5 分間実行できるに行き詰まっています。ユーザーは自分の電話の電源を切るか、このプロセス中にアプリを強制終了する可能性があります。つまり、onCreate() は途中でキャンセルされます。その場合、データベースを消去してonCreate()再実行する必要があります。これどうやってするの?

4

2 に答える 2

1

テーブルを作成し、別のスレッドまたはバックグラウンド スレッドonCreate()でデータを初期化するだけです。Service

そのバックグラウンド スレッドで、データを初期化する前にオブジェクトを呼び出しbeginTransaction()ます。SQLiteDatabaseそれから電話setTransactionSuccessful()してendTransaction()、それが終わったら。SharedPreferencesこの初期化がすでに行われているかどうかを確認できるように、フラグを保持します

于 2015-04-30T15:30:46.977 に答える
0

トランザクションを使用する必要があります。ファイナライズすると (プロセスが完了したとき)、すべてのデータがデータベースに書き込まれます。
そうでなければ、彼らはしません。

トランザクションが何かわからない場合は、トランザクションに関するチュートリアルをご覧ください: http://www.tutorialspoint.com/sqlite/sqlite_transactions.htm

簡単に言えば、トランザクションを使用すると、すべてのデータをバーストで書き込むことができます。開始されたトランザクションのファイナライズがない場合、データは書き込まれません。

そのため、エラーが発生したり、ユーザーが強制終了した場合、トランザクションはファイナライズされず、データは書き込まれません。

于 2015-04-30T15:31:52.953 に答える