私のアプリ ウィジェットはデータベースを使用し、最初の実行時にデータベース ディレクトリにコピーするアクティビティがアセット ディレクトリにプリロードされます。
ただし、その前にウィジェットを挿入すると、データベースがまだ存在しないため、例外がスローされます。
とにかくウィジェットがファイルをチェックし、存在しない場合は、アセットから取得して、アクティビティの代わりにコピーしますか?!?
私のアプリ ウィジェットはデータベースを使用し、最初の実行時にデータベース ディレクトリにコピーするアクティビティがアセット ディレクトリにプリロードされます。
ただし、その前にウィジェットを挿入すると、データベースがまだ存在しないため、例外がスローされます。
とにかくウィジェットがファイルをチェックし、存在しない場合は、アセットから取得して、アクティビティの代わりにコピーしますか?!?
アプリでデータベースをパッケージ化するために使用SQLiteAssetHelper
することを強くお勧めします。その後、通常どおりgetReadableDatabase()
/を使用でき、必要に応じてアセットからデータベースを透過的にアンパックします。getWriteableDatabase()
SQLiteAssetHelper
そうは言っても、これを自分でやりたいと確信している場合はgetAssets()
、Context
渡された の intoonUpdate()
を呼び出してくださいAppWidgetProvider
。
onUpdate()
of はメイン アプリケーション スレッドで呼び出されることに注意してください。そのAppWidgetProvider
ため、バックグラウンド スレッドでアクティビティ データベース I/O を実行しているように (できれば)、アプリ ウィジェットに対しても同じことを行う必要があります。アプリ ウィジェットの一般的な解決策は、IntentService
開始された によって作業が行われるようにすることonUpdate()
です。