2017-03-15 19 views
1

概念の証明として、特定のIoTデバイスからの接続を処理するために非常に単純なTCPサーバーをバックグラウンドで実行するAndroidアプリを実装しています。また、IoTデバイスにデータを戻すために、特定のアクティビティからサーバーと通信する必要があります。 バックグラウンドでサーバーを実行するにはどうすればよいですか? AsyncTasks、スレッド、およびAndroidサービスがあります。最善のアプローチは何でしょうか?AndroidアプリでTCPサーバーを実行する

答えて

1

あなたの目的がフォアグラウンドになっている間にTCPポートだけでリッスンすることを目的としている場合は、そのアクティビティにスレッドをフォークするだけです。

UIがバックグラウンドのときにアプリケーションがTCPポートでリッスンするようにするには、スレッドをフォークするサービスを使用します。

AsyncTaskおよびIntentServiceは、トランザクション処理(ディスクI/O、Webサービスコールなど)には適していますが、不定期使用には適していません。

また、オープンポートを使用するとセキュリティ上の問題が発生することに注意してください。

+0

ありがとうございます。私の目的は、自分の活動がフォアグラウンドにある間だけTCPポートでリッスンすることです。したがって、サーバータスクを別のスレッドで作成するのが最善でしょうか?しかし、私はどのようにそれとコミュニケーションをとるだろうか? – Javiator

+0

@Javiator:何と連絡しますか? 'INTERNET'パーミッションを気にする必要がなく、モバイルデバイスがモバイルであることを心配する必要がある(そしてネットワーク間で切り替える)必要がある以外に、従来のJavaでソケットを実装することとは異なるAndroid実装ソケットについては何もありません。そして、Javaプログラムは、20年の間、より良い部分でインターネットと連携してきました。 Androidで動作し、特定のニーズを満たすライブラリを探します。 – CommonsWare

+0

私はすべての活動からメッセージを継続的に聞く必要があります。サービスでTCPサーバを稼働させてもよろしいですか? –

関連する問題