RECEIVE_BOOT_COMPLETEDの放送受信機を介したデータベースへのアクセス

電話機の起動が完了すると、データベースからの時間、分、++の情報に基づいて、いくつかのアラームを自動的に再登録します。

私は放送のリヴァイバーでこれをやろうとしますが、うまくいかないでしょう。 起動時にデータベース(DB)ヘルパークラスにアクセスしようとするとクラッシュします。 DBヘルパークラスは、アプリケーションからアクセスするときに正常に動作します。

これは可能ですか、サービスのような代替ソリューションを使用する必要がありますか?

3

1 答え

マニフェストに登録されたすべてのブロードキャストレシーバでデータベースI/Oを実行する必要はありません。どのくらい時間がかかるかはわかりません(他のデバイスアクティビティに基づいて)、あなたの onReceive()メソッドはメインのアプリケーションスレッド上で実行されているため、時間が限られ、CPUフットプリントが大きくなります。

データベースI/Oを実行し、アラームをスケジュールするための制御を IntentService に渡してください。バックグラウンドスレッドで IntentService はあなたの onHandleIntent()を呼び出すので、必要な時間がかかるので、 onHandleIntent()/code>が完了します。

8
追加された
また、WakefulBroadcastReceiverに切り替えて、IntentService( plus.google.com/u/0/+AndroidDevelopers/posts/i6MzCp1NyzF
追加された 著者 Johannes,