0

私は長期にわたってコンテンツプロバイダーを運営しています。基本的には、クラウドで検索を実行し、結果とともにカーソルを返します。私の問題は、サーバーの接続と負荷に依存することです。結果が戻るまでに5〜7秒かかる場合があります。

予測検索にコンテンツプロバイダーを使用している場合、前のクエリが返されるまで、(同じアクティビティからの)追加のクエリをブロックしているようです。

プロバイダークエリをキャンセルする方法について何か提案はありますか?

asyncTask&Threadを使用してみましたが、役に立ちませんでした。プロバイダー(リゾルバー)でまだブロックされているようです

4

2 に答える 2

1

たぶん、ローカルSQLite DBにアクセスするためだけにコンテンツプロバイダーを使用し、サービスで長い操作を行う必要があります。

このビデオを見てください:Google I / O2010-AndroidRESTクライアントアプリケーション。これはRESTクライアントアプリケーションの構築に関するものですが、バックグラウンドのものにも同様のアーキテクチャを使用できます。

于 2012-05-08T22:01:07.893 に答える
0

JellyBeanのように見えますが、コンテンツプロバイダーのクエリをcancel()する新しいオプションがあります。

私は実際にあなたのアドバイスを受けて、コンテンツプロバイダーを書き直してsqlitedbにカーソルを合わせ、インテントサービスを使用してdbを更新しました。

プロバイダーが強制終了された場合、クライアントに通知が届かないようで、応答なしでサービスインテントを送信し続ける可能性があるという1つの問題が発生しました。これを処理するいくつかの方法(プロバイダーでは、これを変更できます)元のuriを使用したブロードキャストイベントで、カーソルが切断されていますが、それはやや遅いです)。

私はあなたが接続している間にプロバイダーが殺された場合に誰かを助けるかもしれない私自身の質問に答えることになりました...

カーソル付きコンテンツプロバイダー-強制終了(クライアントに通知する方法)

于 2012-09-12T13:16:34.697 に答える