在另一个线程内启动一个线程

时间:2014-04-29 08:51:38

标签: android multithreading

引言

我的主要活动类中有一个子类,它扩展了线程并在每次相机检测到移动时启动。

在这个线程中,当它连续地检测到运动时,它必须启动另一个属于主Activity类的线程。

我现在可能有点乱,但我现在详细解释

CODE

这是我的代码的简化版本,准确显示了我的意思:

public class MainActivity extends Activity {

    //...

    public Runnable SpeechWhenMotion = new Runnable() {
        @Override
        public void run() {

        // Do stuff here

        }
    }

    private static final class DetectionThread extends Thread {

    //...

    @Override
        public void run() {

        //...
        //START "SpeechWhenMotion" HERE! 

        }
    }
}

问题

所以我怀疑的是,如何在DetectionThread类的线程内启动Runnable? 我尝试过使用处理程序,但我认为我做得不对,因为它没有开始。

2 个答案:

答案 0 :(得分:2)

如果你真的需要SpeechWhenMotion可以运行为MainActivity的nester类,你需要提供MainActivity或SpeechWhenMotion实例到DetectionThread类的链接:

 private static final class DetectionThread extends Thread {

    private Runnable mSpeechWhenMotionRunnable;

    //...
 }

然后,当您创建DetectionThread时,从主活动

为其分配SpeechWhenMotion
DetectionThread detectionThread = new DetectionThread();
detectionThread.mSpeechWhenMotionRunnable = SpeechWhenMotion;

最后,在DetectionThread中调用启动新线程:

   //START "SpeechWhenMotion" HERE! 
   new Thread(mSpeechWhenMotionRunnable).start();

答案 1 :(得分:-1)

我试了一下,这很顺利:

new Thread(SpeechWhenMotion).start();