在以有序的方式关闭之后,为Android重新推出一个线程

时间:2013-03-01 22:30:44

标签: android multithreading

我有这样的声明:

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

可以随时获得新主题吗?我认为将每种线程作为一个目标进程无序地睡觉并试图重新启动自己,似乎正确的方法就是让它做它自己的事情并自杀然后只需在需要时重新制作。我很惊讶我对此很失落。

感谢Dan

1 个答案:

答案 0 :(得分:0)

另一种方法是使用Android的结构来“循环”线程。看到 Processes and Threads介绍。 Handler类的javadoc向您展示了如何运行循环的线程,从消息队列中获取信息。

另一个选项,你真正应该考虑的选择是使用IntentService