1

Androidコンテンツプロバイダーには、通常の容疑者{挿入、削除、クエリ、更新}のメソッドがありますが、制御メッセージを送信する場合、明確なメカニズムはありません。によって管理されているテーブルの1つをリセット、クリア、およびリロードする必要があるとします。これはどのように行うことができますか?私にはいくつかのアプローチがあり、それぞれが少しハックなようです。

1)ジョブへのアクティビティ(またはサービス/レシーバー)を作成します。アクティビティは一括削除と挿入を行います。これは最もハックが少ないように見えますが、コンテンツプロバイダーが起動すると、データベースヘルパーがテーブルを作成して初期化します。
コンテンツプロバイダーのデータベースヘルパーと別のアクティビティで初期化コードを複製するのは非効率的です。

2)コンテンツプロバイダーAPIをハイジャックします。ダミーテーブルは、挿入(または更新/クエリ/削除)メソッドが他の方法ではアクセスできないメソッドを呼び出す場所に作成できます。

3)多重継承を使用して、コンテンツプロバイダーもサービス(またはアクティビティ)にします。これはおそらく私が望むものに最も近いですが、これを行う方法がわかりません。特にそれが活動だった場合、それは危険だと感じます。

4)(3)と同様のサービスコンテンツとプロバイダーのペアがありますが、いぼがないことを願っています。このサービスには、あらゆる種類の制御を行うための支援があります。ルックアップテーブルのロード、テーブルのクリア、期限切れのタプルのパージなど、...これが行われた場合、サービスはどのように開始されますか?コンテンツプロバイダーによって?

4

1 に答える 1

1

3) Java では使用できません。

ContentProvider4)サービスによって提供される APIを単純にダンプして使用します。

次の場合もあります。

5)ContentProviderレジスタにBroadcastReceiverviaを設定getContext().registerReceiver()し、さまざまな操作のためにブロードキャストを送信します。

私はそれを試していませんが、Context返された bygetContext()がそれをサポートしていると仮定すると、うまくいくはずです。

于 2010-10-06T17:57:54.403 に答える