0

プライベート ネットワークを使用して、空港用の高度なインターホンで MMS のようなアプリを開発しています。ソケットを使用して特定のサーバーからメッセージを受信します。ユーザーがメッセージ システムにログオンする場合、ユーザーはログアウトするまで常にメッセージを受信する必要があります。

このような問題を解決するための私の考えは次のとおりです。

  1. 1 つのローカル サービスをマネージャー サービスとして使用することにより、このサービスは UI からコマンドを受信し、1 つのリモート サービスはサーバーとの接続を維持します。
  2. ローカル サービスが UI から別のコマンドを受信すると、Application サブクラスに格納されているUserStateをチェックし、必要な情報をリモート サービスに送信します。
  3. リモート サービスは、サーバーに送信するさまざまなメッセージ パケットを生成します。
  4. 受信手順は次のようになります: リモート サービスがさまざまなメッセージ (SMS、連絡先のアドレス リストなど) を受信して​​解析した後、必要な文字列、ファイル URI、またはオブジェクトをローカル サービスに送信し、ローカル サービスは情報をアクティビティ。

このアイデアがうまくいくかどうかはわかりません。さまざまな送信コマンドと受信メッセージと一貫した接続を処理するためにマネージャーのような役割が必要なため、アプリの構造はどのようにする必要がありますか?

4

1 に答える 1

0

1 つのローカル サービスをマネージャー サービスとして使用すると、このサービスは UI からコマンドを受信し、1 つのリモート サービスはサーバーとの接続を維持します。

いいえ。1 つのローカル サービス、ピリオドを使用します。2 番目のサービスは何の価値もありません。リモート サービスは、RAM、CPU、およびバッテリを無駄に浪費することで、アプリを良くするどころか悪化させます。

接続サービスを常に実行する方法を教えてください。

サービスを「常に」実行することはできません。と を使用するstartService()startForeground()、自動的に終了する可能性が最も低くなります。ただし、ユーザーは、必要に応じて、アプリを強制停止するか、タスク キラーを使用するかを選択できます。

サービス内のドキュメントの場合、ローカル サービスは、システムによってリモート サービス (独自のプロセスで実行されている) よりも簡単に強制終了できます。

それは正しくありません。

于 2012-04-21T15:09:58.333 に答える