1

When I use send message from a jni thread to this thread (ZWANJniThread) by "Input" method, At beginning, it works, but when I create a new ZWANJniThread thread, sometimes, I get "W/Looper: Could not write wake signal, errno=89" in log.

Has any body experienced this Looper error or any hint to check this problem? thanks.

public class ZWANJniThread extends Thread
{   
    private static final String ZWANTAG = ZWANJniThread.class.getCanonicalName();   
    private Handler mMsgHandler  = null;

    VideoDeviceCallBack mVideoDeviceCallBack;

    public void setmVideoDeviceCallBack(VideoDeviceCallBack mVideoDeviceCallBack) {
        this.mVideoDeviceCallBack = mVideoDeviceCallBack;
    }

    public ZWANJniThread() {
        Log.e(ZWANTAG, ">>>>>ZWANJniThread Constructor");
    }



    public int Input(int msgWhat, Object msgObj){
        if(mMsgHandler == null)
        {   
            Log.e(ZWANTAG, "mMsgHandler is NULL===========");
            return 0;
        }
        Message msg = mMsgHandler.obtainMessage();
        msg.what = msgWhat;
        msg.obj = msgObj;
        mMsgHandler.sendMessage(msg);
        return 0;
    }


    @Override
    public void run(){

        Looper.prepare();

        mMsgHandler = new Handler(){
            @Override
            public void handleMessage(Message msg){
                Log.e("ZWANTAG", "handle Message---" + msg.what);


                switch (msg.what)
                {

                    case ZWANMessage.JniThreadMessage.VIDEODEVICE_Open:
                    {
                        T_ZWANCamerID tCamerId = (T_ZWANCamerID)msg.obj;
                        mVideoDeviceCallBack.Open(tCamerId.s32CamerID);
                        break;
                    }
                    case ZWANMessage.JniThreadMessage.VIDEODEVICE_Start:
                    {
                        T_ZWANVideoSwitchLevel tLevel= (T_ZWANVideoSwitchLevel) msg.obj;
                        mVideoDeviceCallBack.Start(null, tLevel.s32Width, tLevel.s32Height, tLevel.mLocalSurfaceHolder);
                        break;
                    }
                    case ZWANMessage.JniThreadMessage.VIDEODEVICE_Stop:
                    {
                        mVideoDeviceCallBack.Stop();
                        break;
                    }
                    case ZWANMessage.JniThreadMessage.VIDEODEVICE_Close:
                    {
                        mVideoDeviceCallBack.Close();
                        break;
                    }
                    default:
                        break;
                }

            }

        };


        Looper.loop();

    }
}
dong
  • 11
  • 1

0 Answers0