onCreate()中创建的GyroListener在onResume()中为null

时间:2013-02-19 12:56:42

标签: android onresume gyroscope

我在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个

0 个答案:

没有答案