我的Null Pointer异常包含以下代码:
void videoCaptureLoop() {
if (!isRecording) {
if (videoCaptureThread != null){
videoCaptureThread.interrupt();
videoCaptureThread = null;
}
return;
}
//Start Video Capture Thread
if (videoCaptureThread==null){
videoCaptureThread = new VideoCaptureLooperThread();
videoCaptureThread.start();
}
//Post capture video on 30 fps interval <<<<--------------NULL POINTER ON NEXT LINE
videoCaptureThread.mHandler.postDelayed(runVideoCaptureLoop, (long) 33.3333333333);
}
Runnable runVideoCaptureLoop = new Runnable(){
@Override
public void run() {
videoCaptureLoop();
}
};
public class VideoCaptureLooperThread extends Thread{
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler();
Looper.loop();
}
}
我一直在线上得到一个空指针异常:
videoCaptureThread.mHandler.postDelayed(runVideoCaptureLoop, (long) 33.3333333333);
麻烦的是,我不确定是否为null,我在其中插入了一个断点,但一切看起来都很好,直到崩溃为止,而且在崩溃前我无法在断点处看到任何不同的东西。
我的VideoCaptureLooperThread类看起来正确吗?它与mHandler是否需要静态有关吗?
错误
09-28 15:50:32.773: E/AndroidRuntime(24931): FATAL EXCEPTION: main
09-28 15:50:32.773: E/AndroidRuntime(24931): java.lang.NullPointerException
09-28 15:50:32.773: E/AndroidRuntime(24931): at com.harmonicprocesses.penelopefree.camera.Pcamera.videoCaptureLoop(Pcamera.java:380)
09-28 15:50:32.773: E/AndroidRuntime(24931): at com.harmonicprocesses.penelopefree.camera.Pcamera$2.onClick(Pcamera.java:338)
09-28 15:50:32.773: E/AndroidRuntime(24931): at android.view.View.performClick(View.java:4240)
谢谢,
最佳答案
mHandler提供了nullpointer。 mHandler似乎仅在VideoCaptureLooperThread中声明。
在videoCaptureLoop之外的videoCaptureLoop()中,您引用的是mHandler。