我在onCreate()
中创建了一个GyroListener,并在onResume()
中使用它。有时我在onResume()
中得到NullPointerException,但我不明白它是怎么回事,因为onCreate()
总是被称为onResume()
。这种情况仅发生在2.2到3.2.1的Android版本中,大多数用户都使用Android 4+,并且我没有从他们的设备中获得此错误的单一报告。
这是我的代码(在onResume()
的最后一行抛出NullPointerException):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lock_screen);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensors = sensorManager.getSensorList(Sensor.TYPE_GYROSCOPE);
gyroListener = new GyroListener();
gyroListener.setOnGyroEventListener(new OnGyroEventListener() {
@Override
public void onTimeReset() {
Toast.makeText(getApplicationContext(), "Reseted the time",
Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onPause() {
sensorManager.unregisterListener(gyroListener);
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
for (final Sensor sensor : sensors) {
sensorManager.registerListener(gyroListener, sensor,
SensorManager.SENSOR_DELAY_FASTEST);
}
gyroListener.resetStatus();
}
这是例外:
java.lang.RuntimeException:无法恢复活动{mypackage / mypackage.activity.MyActivity}:java.lang.NullPointerException 在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124) 在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672) 在android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 在android.os.Handler.dispatchMessage(Handler.java:99) 在android.os.Looper.loop(Looper.java:130) 在android.app.ActivityThread.main(ActivityThread.java:3691) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:507) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:912) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670) at dalvik.system.NativeStart.main(Native Method)引起:java.lang.NullPointerException at mypackage.activity.MyActivity.onResume(MyActivity.java:373) 在android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1153) 在android.app.Activity.performResume(Activity.java:3874) 在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2114) ......还有12个