私は安らかなアンドロイドアプリケーションを開発していますが、私はまだアンドロイドの初心者であり、後で問題が発生するような初心者のベッドの構造設計は避けたいと思います。
私はAndroidサービスとRESTfulアプリケーションについて多くの議論を読みましたが、それらの多くは互いに相反しているので、良いアプローチを選択したかどうかを知りたいと思います。
このプレゼンテーションに触発されてhttp://www.youtube.com/watch?v=xHXn3Kg2IQEhttpリクエストを非同期タスクではなくIntentServicesに入れました。
インテントサービスを選択した理由は次のとおりです。
- サービスとして、アクティビティのようにフォアグラウンド/バックグラウンドの切り替えに敏感ではありません(殺されることはありません)。
- インテントサービスは別のスレッドで作業を提供するため、ユーザーインターフェイスは応答性を維持します。
Intent Serviceは複数のリクエストを同時に実行できないため、ドメインをいくつかのグループに「分割」し、グループごとにIntentServiceを作成しました。(最終的には、1つのCRUDセット-> 1つのインテントサービスになります)このようにして、グループ内で一度に実行できるリクエストは1つだけになります(この方法では、たとえば実行できないため、これは私にとっては良いことです)同じユニットで更新および削除します)。また、反対側では、他のグループからのリクエストであれば、同時に複数のリクエストを実行でき、相互に影響を与えることはありません。
だから基本的に、私はこれを持っています:
名前と値のペアからリクエストを作成する1つの汎用HTTPRequestクラス
UserIntentService-ユーザー関連のリクエストを作成し、HTTPRequest cassを使用して実行し、UserProcessorを使用してリクエストを処理します。データを意図して発信者に通知します。
CallIntentService-通話関連のリクエストを作成し、HTTPRequestcassを使用して実行します。CallProcessorを使用してリクエストを処理します。データを意図して発信者に通知します。
UserProcessor-応答の解析
CallProcessor-応答の解析
ServiceHelper-正しいインテントサービスを見つけて開始します
fromアクティビティを使用する場合は、SeviceHelper.StartService(action、data)のようなものを使用し、アクティビティ内のローカルBroadcastReceiverから応答を受け取ります。受信者をOnStart()に登録し、アクティビティのonStop()メソッドで登録を解除します。
それは良いアプローチですか?
すべての呼び出しに対してIntentServiceを1つだけ持つ必要がありますか?リクエストごとに開始する必要があるインテントサービスを使用するのではなく、バックグラウンドで常に実行される1つのサービスを使用する方がよいでしょうか。
私が見逃しているこのアプローチで悪くなる可能性がある他のことはありますか?