参考:1)http://blog.csdn.net/yili_xie/archive/2009/11/12/4803517.aspx
          2) android代码: status_t CameraHardwareStub::startPreview()class PreviewThread : public Thread {
    public:
        PreviewThread() :
            Thread(false)
        { LOGE(" 3 =  " );  }        virtual void onFirstRef()   //我的理解是   1)构造了Thread之 后 会执行这个函数
        {
           run("CameraPreviewThread", PRIORITY_URGENT_DISPLAY)  ; // 我的理解是 2)这个run会调用下面的 threadLoop()
        }        virtual bool threadLoop()                // 我的理解是 3)由 于threadLoop()返回true  ,所以会不停的打印" 5 =  "
        {
            LOGE(" 5 =  " );
            return true;
        }
};
//4) 但是实际上是onFirstRef没有执行到。或许是我对android的线程机制理 解错了  大家看看呢?
int main()
{
    LOGE(" 1 = ");
    new PreviewThread();
    LOGE(" 2 = ");    return 0;

解决方案 »

  1.   

    可以直接继承Thread,不需要重新封装这个。  class MyThread extends Thread {
          public Handler mHandler;      public void run() {
              Looper.prepare();          mHandler = new Handler() {
                  public void handleMessage(Message msg) {
                      // process incoming messages here
                  }
              };          Looper.loop();
          }
      }
      

  2.   

    你现在知道为什么你的运行不起来了吗???很想知道结果,你这个代码应该是google写好的源码啊。
      

  3.   

    onFirstRef是在RefBase::incStrong中被调用到的,你的代码应该改成sp <PreviewThread> pThread = new PreviewThread();这样在做赋值给pThread时会调用incStrong,进而会执行到onFirstRef