2

Android用の小さなチャットクライアントを書いています。したがって、私が望む動作は、アプリケーションが新しいメッセージをバックグラウンドでリッスンし、それらを通知領域 (アプリのアイコンのみ) に表示することです。着信メッセージのリッスンは非常に長期的なものである必要があります-UIスレッドを閉じてから数日かかるかもしれません

私の質問は次のとおりです。独自のプロセスを持つサービスが必要ですか? リスナーの AsyncTask を開始する必要がありますか? または、それを行うためのはるかに良い方法はありますか? また、新しいサービス プロセスを使用する場合、AIDL を使用する必要がありますか?

4

1 に答える 1

2

どうやってするの?

チャット サーバーで GCMを使用してチャット メッセージをデバイスにプッシュします。

独自のプロセスを持つサービスが必要ですか?

いいえ。

まず、独自のプロセスである必要はありません。

第 2 に、サービスを常に実行し続ける必要があり、これは多くのユーザーが嫌うものです。

第 3 に、デバイスの電源を常にオンにし、Wi-Fi 無線の電源を常にオンにしておく必要があり、これはユーザーにとってありがたいことではありません。例外: モバイル データをサポートするデバイス (電話など) で実行していて、細心の注意を払っていれば、デバイスがスリープ状態のときにサーバーへのオープン ソケット接続を維持できます。これを正しく機能させるのは困難です。

リスナーの AsyncTask を開始する必要がありますか?

おそらくそうではありません。

または、それを行うためのはるかに良い方法はありますか?

チャット サーバーで GCMを使用してチャット メッセージをデバイスにプッシュします。

または、場合によっては、チャット サーバーをキューイング モデルで動作するように変更して、定期的に (ユーザーが構成可能な間隔で) ポーリングして、利用可能なメッセージを取得できるようにします。

また、新しいサービス プロセスを使用する場合、AIDL を使用する必要がありますか?

いいえ。

于 2013-01-12T17:53:46.777 に答える