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() ;
    }
  }
};

当它完成时,它像这样成功调用(只计数到 12 到 logcat 中)。该过程正确死亡。它是这样开始的:

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 回答