0

次のような宣言があります。

// Background doer  
Thread BgThread = new Thread() {

  @Override 
  public void run() {
    aBgCounter = 0 ;
    boolean stopNow = false ;

    try {
      while( !stopNow ) {
        sleep( 1000 ) ;
        WriteOnThatLogCat( "BgThread " + String.valueOf( aBgCounter ) ) ;
        aBgCounter++ ;
          if( aBgCounter > 12 ) stopNow = true ;
      }
    } catch (InterruptedException e) {
      e.printStackTrace() ;
    }
  }
};

完了すると、このように正常に呼び出されます( logcat に 12 までカウントされます)。プロセスは正しく終了します。次のように始まりました:

WriteOnThatLogCat("Issue BgThread.start() from 6") ;
BgThread.start() ;

もちろん、これはもっと複雑な処理のフロー制御です。とにかく、後でプログラムは同じことをもう一度行うことに決め、スレッドを再度呼び出したいと考えています。スレッドは再利用できないと読みましたが、識別子などを再利用できるようにしたいので、特定のことを実行し、自分自身を生きて死に、再利用できる多くのスレッドを呼び出すことができます。= NULL とあらゆる種類のものを試しました。上記を変更して、次のようなフラグメントを作成するにはどうすればよいですか。

WriteOnThatLogCat("Issue BgThread.start() from 6") ;
BgThread.start() ;

新しいスレッドを取得して、いつでもそのことを実行できますか? 目標プロセスとして各種類のスレッドをスリープ状態にして再起動しようとするのは無秩序だと思います。正しい方法は、それを実行して自分自身を殺し、必要に応じて再作成することです。私はこれにとても迷っていることに驚いています。

ありがとうダン

4

1 に答える 1

0

別の方法は、スレッドを「ループ」するために Android の構造を使用することです。概要については、プロセスとスレッドを参照 してください。Handlerクラスの javadoc には、ループするスレッドを実行して、メッセージのキューから情報を取得する方法が示されています。

別のオプションであり、実際に検討する必要があるのは、IntentServiceを使用することです。

于 2013-03-01T23:10:53.280 に答える