私は、REST を多用するアプリケーションに関する Google I/O での Virgil のプレゼンテーションを見てきました。
Google I/O 2010 - Android REST クライアント アプリケーション
メモ帳のチュートリアルでは UI レイヤーから直接データベース呼び出しを行いますが、Virgil はサービスでデータベース呼び出しを行うことを提案しています。
現時点では、アクティビティの onCreate メソッドは、拡張された ContentProvider を使用して SQLite データベースにアクセスし、アクティビティの ListView にアタッチする Cursor をクエリします。
このコードをサービスに移動したいと思います。簡単です。私の質問は、カーソルを UI レイヤーに戻す適切な方法は何ですか? 多くの質問が提起されているのを見てきましたが、より適切な方法があることを示唆する人が常にいるようです。その方法は何ですか?
より具体的には、これまでのところ、Activity はある種のリスナーとして登録する必要があると考えています。サービスで Cursor が取得されると、それにアクセスするために UI レイヤーに通知が設定されます。アクティビティがそれをつかむことができるように、サービスはそれをどこに押し込みますか?
また、私が考えているアーキテクチャは、アクティビティによって呼び出される拡張サービスを持つことです。このサービス内では、拡張された ContentProvider を使用してデータベース トランザクションが行われ、リッスンしているすべてのアクティビティに通知され、Web サービスにヒットするスレッドが起動されます。したがって、1 つの拡張サービス、1 つの拡張 ContentProvider、およびさまざまな Web サービス用のいくつかの拡張スレッドがあります。これは受け入れられますか?