1

通常の Java スレッドを使用するソケット I/O 用のネットワーク パッケージを作成しましたが、このパッケージを使用できるかどうか疑問に思っています。これらのスレッドを使用して、アクティビティの UI で何も操作していません。

または、それらの Java スレッドを Android 互換のものに移植する必要がありますか? アクティビティのビューを変更しない限り、通常の Java スレッドを使用できるといつも思っていたからです。

コードサンプルはどのように投稿しますか?

メッセージ キューが機能しているかどうかをテストして、接続が機能するようになりました。2 つの LinkedBlockingQueue 入力と出力を使用しています。スレッドを使用する必要がある理由。ここで、接続と SocketIO をカプセル化するために使用するクラスを AsyncTask に変換しました。これは、Android アプリを使用して Wi-Fi 経由で車両を制御する必要がある学校のプロジェクト用です。

4

3 に答える 3

1

Android では Java スレッドを使用できます。実際、両者に違いはなく、Android モデルは共通Threadクラスをサポートしています。ただし、単純に古いコードに Android 固有のコンポーネントを貼り付けて、最善を尽くすことはお勧めできません。Service代わりに、これは を使用して、UI と整列するバックグラウンド スレッドを調整するのに適した場所です。サービスは UI なしで実行されますが、アプリの残りの部分から論理的に分離するために別のコンポーネント内にあります。

于 2012-06-10T22:33:41.207 に答える
0
Threads from java works just fine with Android..

ただし、いくつかの点に注意する必要があります。

  1. 非UI作業をUIスレッドから遠ざけることは良いプログラミング慣行でした。だが

    HoneyCombからそのルール。

  2. クラスをに拡張することにより、Javaの方法を使用できますThread class or implementing Runnable interface.

  3. androidで別のスレッドを作成すると、UIスレッドから削除されるため、UIスレッドで非UI作業を表示するために戻るには、を使用するかHandlerAsyncTask(UIと非同期を同期します)を使用してみてください。 AndroidのUI)。

于 2012-06-11T05:58:55.130 に答える
0

ネットワーク jar ライブラリ内で package のプレーンな古いスレッドを使用する場合java.lang、API レベル 1 から Android に移植されているため、特別なことを行う必要はありません。

packagejava.util.concurrentのクラスを使用する場合、一部のクラスは API レベル 1 以降 Android に移植されていないため、ネットワーク jar ライブラリで 2 回目のショットを作成する必要があります。 BlockingDequeは API レベル 9 以降で導入されました。

packagejava.netにも同じ状況が存在します。たとえば、Java.net.IDNは API レベル 9 から導入されています。したがって、ネットワーク jar ライブラリでも確認することをお勧めします。

于 2012-06-10T23:37:32.107 に答える