0

私のアプリ ウィジェットはデータベースを使用し、最初の実行時にデータベース ディレクトリにコピーするアクティビティがアセット ディレクトリにプリロードされます。

ただし、その前にウィジェットを挿入すると、データベースがまだ存在しないため、例外がスローされます。

とにかくウィジェットがファイルをチェックし、存在しない場合は、アセットから取得して、アクティビティの代わりにコピーしますか?!?

4

1 に答える 1

1

アプリでデータベースをパッケージ化するために使用SQLiteAssetHelperすることを強くお勧めします。その後、通常どおりgetReadableDatabase()/を使用でき、必要に応じてアセットからデータベースを透過的にアンパックします。getWriteableDatabase()SQLiteAssetHelper

そうは言っても、これを自分でやりたいと確信している場合はgetAssets()Context渡された の intoonUpdate()を呼び出してくださいAppWidgetProvider

onUpdate()of はメイン アプリケーション スレッドで呼び出されることに注意してください。そのAppWidgetProviderため、バックグラウンド スレッドでアクティビティ データベース I/O を実行しているように (できれば)、アプリ ウィジェットに対しても同じことを行う必要があります。アプリ ウィジェットの一般的な解決策は、IntentService開始された によって作業が行われるようにすることonUpdate()です。

于 2012-12-16T22:10:59.667 に答える