(最良)カスタムコンテンツプロバイダーにコントロールメッセージを配信する方法

StackOverflow https://stackoverflow.com/questions/3873214

質問

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

1)仕事にアクティビティ(またはサービス/受信機)を作成します。アクティビティは、バルク削除と挿入を行います。これは最もハッキッシュのように思えますが、コンテンツプロバイダーがデータベースヘルパーを起動すると、テーブルが作成され、初期化されます。
コンテンツプロバイダーのデータベースヘルパーと別のアクティビティで初期化コードを複製することは非効率的と思われます。

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

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

4)(3)に似たサービスコンテンツプロバイダーペアを持っていますが、できればwardがありません。このサービスには、すべての制御種類のことを行うためのAIDLがいます。ルックアップテーブルの読み込み、テーブルのクリア、有効期限が切れたタプルなど、...これが行われた場合、サービスはどのように開始されますか?コンテンツプロバイダーによって?

役に立ちましたか?

解決

3)Javaでは不可能です。

4)単にダンプします ContentProvider サービスが提供するAPIを使用します。

あるかもしれません:

5) ContentProvider 登録a BroadcastReceiver 経由 getContext().registerReceiver(), 、さまざまな操作のためにブロードキャストを送信します

私はそれを試していませんが、それを想定しています Context によって返されます getContext() それをサポートします、それは機能するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top