sendBroadcast异常(NullPointerException)在一个新线程中

时间:2013-07-29 21:59:57

标签: android multithreading android-broadcast

我正在从新线程发送“广播”。并在com.internectics.fragment.AddPackFragment $ 6.run中收到“java.lang.NullPointerException”错误。我在这里强调一下: 1.这些代码在DialogFragment的子类中 2.如果我删除“getActivity()。sendBroadcast(intent);”这一行,它也不例外。所以我认为这是根本原因。

感谢是否有人可以评论我的问题并帮助我解决问题

new Thread() {
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //some other codes skipped here, including saving data to persistence
                    Intent intent = new Intent();
                    intent.setAction(Global.BROADCAST_ACTION_UPDATE_MASTER_VIEW);
                    intent.putExtra(Global.KEY_FROM, Global.BROADCAST_EXTRA_FROM_NEW_PACK);
                    getActivity().sendBroadcast(intent);
                }
            });
        };
    }.start();

2 个答案:

答案 0 :(得分:1)

在执行线程之前,您是否可以获得对活动的最终引用,并在运行方法中使用该引用?在使用它之前一定要检查它是否为空

答案 1 :(得分:0)

目前还不清楚,为什么你需要一个带有runOnUiThread(...)的新线程来执行此操作。相应于http://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29

This call is asynchronous; it returns immediately, and you will continue executing while the receivers are run.