Virgil の android rest google io ビデオを見て、それを実装しようとしました。
要するにこれが問題ですが、詳細については読み進めてください。
ContentResolver クエリ -> コンテンツ プロバイダー クエリ -> データベース更新サービスを開始、クエリを作成、カーソルを返す
サービス -> データベースの更新 -> ブロードキャスト データベースの更新
アクティビティ -> ブロードキャストの登録 -> Contentresolver クエリの受信時。(私たちは最初に戻った)
これが無限ループになりました。
私のコンテンツ プロバイダーでは、クエリ メソッド用です。rest サービスを利用した Intent サービスを開始します。次に、query メソッドがローカル データベースにクエリを実行し、カーソルを返します。インテント サービスの onhandle() メソッドで、Web サービスから新しいコンテンツを取得し、データベースに書き込みます。次に、アクションを含むローカル ブロードキャストを送信します。
私のアクティビティでは、ブロードキャストと onreceive() を登録します。contentresolver.query を呼び出して、データベースから新しいコンテンツを取得します。これは明らかに循環問題を引き起こしています。コンテンツ プロバイダーの query..service..broadcast に戻りました。
受信後にブロードキャストを停止できるようにしたい。
どうすればこれを解決できますか。コンテンツ リゾルバーではなく SQLitedatabase クエリを使用する必要がありますか? または、ブロードキャストを別の方法で送信する必要があります。BroadcastAfterUpdateOn や Off などのコンテンツ リゾルバ クエリで別のパラメータを送信できますか? コンテンツ リゾルバーを派生させ、カスタム クエリ メソッドを作成する必要がありますか?