0

私の Android アプリは、アプリのバックグラウンドで USB シリアルを介して常に受信する必要がありますが、USB シリアルを介した情報の送信は特定の機能でのみ行われます。送受信するとき、毎回 X バイトのパケットを常に送信しています。Android USB API がどのように機能するかは理解していますが、これをどのように整理すればよいでしょうか? 受信のみにスレッドを使用し、残りを関数として使用するか、または USB 接続全体/送信と受信をすべてスレッドにまとめて使用しますか? 主なアクティビティは「Homescreen.java」と呼ばれ、これまでに整理した方法を次に示します。

public class HomeScreen extends Activity implements OnTouchListener, Runnable{
onCreate() { }
onResume() { }
onStart() { }
onDestroy() { }
run() { }
}

注: onPause がない理由は、このアプリがフルスクリーン ウィジェットであり、決して閉じてはならないためです。

別の質問: スレッドを作成する場合、Homescreen.java から拡張する必要がありますか? そして、コンテキストはどうですか?輸入するだけでいいの?(Contextオブジェクトにはあまり熱心ではありません)

4

2 に答える 2

0

AsyncTaskを見ることができます。これはAndroid向けの特別なスレッド実装であり、物事をよりシンプルに保つ必要があります。スレッド化された「重い持ち上げ」を行っていない場合は、AsyncTaskを使用することをお勧めします。HomeScreenクラス内に内部クラスを記述し、ロジックを記述して、アクティビティから(たとえば、onCreate()内から)呼び出すだけです。

アクティビティ内から試すことができますgetBaseContext()-これにより、関連するコンテキストが得られると思います。

乾杯

于 2012-06-01T22:13:51.793 に答える
0

これは設計上の選択肢です。たとえば、1 つのバックグラウンド スレッドで USB からのデータを処理する場合などです。

public class test extends Activity{
Thread t;
runT= true;

public void onCreate(Bundle b)
{
    ..........
    ..........
    t = new Thread(new Runnable() {
        @Override
        public void run()
        {
            while(runT)
            {
                //call data read or send functions here you can add condtion to sleep the thread as well
            }
        }
    });
    t.start();
}
}

アクティビティを終了するときは、runT を false に設定するだけで、スレッドが停止します。

スレッドプールを用意して、それに応じて theads を使用することもできます。

これが頻繁に発生しない場合は、データを送信するたびに Asynctask を開始できます。

于 2012-06-01T22:01:25.763 に答える