HandlerThread空异常-Android

HandlerThread空异常-Android,android,message-queue,android-handler,android-looper,android-handlerthread,Android,Message Queue,Android Handler,Android Looper,Android Handlerthread,我在我的应用程序中以这种方式使用ThreadHandler public class MessageThread extends HandlerThread { Handler mHandler; public MessageThread() { super("Message Thread"); } public void queueProcessMessage(msgObject mObj) { mHandler.obtai

我在我的应用程序中以这种方式使用ThreadHandler

public class MessageThread extends HandlerThread {
    Handler mHandler;

    public MessageThread() {
        super("Message Thread");
    }

    public void queueProcessMessage(msgObject mObj) {

        mHandler.obtainMessage(PROCESS_MESSAGE, mObj).sendToTarget();

    }

    @Override
    protected void onLooperPrepared() {

       Commons.logIt("OnLoopPrep");

        mHandler = new Handler() {

            @Override
            public void handleMessage(Message msg) {

                switch (msg.what) {


                    case PROCESS_MESSAGE:
                        process_message((msgObject) msg.obj);
                        break;
                    default:

                        break;

                }
            }
        };
    }

   process_message(msgObject obj) {
        //Do stuff
   }

}
我在onCreate()中初始化它,如下所示

public void onCreate(Bundle savedInstanceState) {

    MessageThread mThread = new MessageThread();
    mThread.start();
    mThread.getLooper();
    if (mThread != null)
        mThread.queueProcessMessage(Object);// this is the line the compiler is pointing at.
}

它工作正常,问题是我需要添加一些其他东西,在那里我必须启动另一个等待结果的活动,所以我必须初始化/使用它,如下所示,因为onActivityResult在onCreate之前被调用。当我启动一个用于结果的活动时,这一次我得到了一个错误

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Message android.os.Handler.obtainMessage(int, java.lang.Object)' on a null object reference

看起来线程没有初始化,我缺少什么

编辑1

在这里讨论了这个问题之后,处理程序的初始化似乎需要一点时间,我做了这个,这很难看,但它正在工作,我该怎么做

    public void queueProcessMessage(msgObject mObj) {
         while (mHandler == null)
            Log.i(TAG, "Not init yet"); //It keeps on looping here
        mHandler.obtainMessage(PROCESS_MESSAGE, mObj).sendToTarget();

    }

什么是
对象
,在哪里定义/设置?另外,请告诉我您没有在
对象
类之后命名变量引用…这只是我的示例,我将进行更新以避免混淆。“onActivityResult在onCreate之前被调用”这实际上是不可能的。有可能的,onResume()与onCreate()不同。在onCreate()之前调用ActivityResult()是不可能的
    public void queueProcessMessage(msgObject mObj) {
         while (mHandler == null)
            Log.i(TAG, "Not init yet"); //It keeps on looping here
        mHandler.obtainMessage(PROCESS_MESSAGE, mObj).sendToTarget();

    }