3
  • スレッドを開始するAndroidアクティビティがあります。
  • スレッドで、永続的なTCPソケット接続を開きます。
  • ソケットがサーバーに接続すると、動的データがダウンロードされます。
  • スレッドは、データが受信されると、Handlerクラスを使用してアクティビティにメッセージを送信します。

これで、ユーザーがポートレートモードからランドスケープモードに切り替えた場合、アクティビティはonDestroy呼び出しを受け取ります。この時点で、ソケットを閉じてスレッドを停止します。

Androidがランドスケープモードに切り替わると、onCreateが再度呼び出され、ソケットの再接続を行う必要があります。また、サーバーには以前に送信されたものを知る機能がないため、アクティビティが受信したすべてのデータをもう一度ダウンロードする必要があります。つまり、「再開」機能はありません。

したがって、問題は、ランドスケープモードが変更されたときに常に再送されるデータがたくさんあることです。

ここでの私のオプションは何ですか?

  • サーバーへのソケットトラフィックを処理するサービスを作成する必要があるため、サーバーがサービスで送信したすべてのデータを常に取得します。
  • それとも、ランドスケープモードをまとめて無効にする必要がありますか?
  • または、私の最善の策は、非常に大きな仕事である私のサーバーを書き直すことです:-)

すべての入力を歓迎します:-)

/ヘンリック

4

1 に答える 1

6

アクティビティが再開されないようにするか(ローテーションAndroidでアクティビティを再開する)、アプリケーションが管理するサービスを実装します。Serviceメソッドは、私が見たアプリケーションで非常に人気があり、接続を切断するときにある程度の柔軟性があります。

于 2010-05-30T19:29:29.280 に答える