diff --git a/core/java/android/webkit/DeviceMotionService.java b/core/java/android/webkit/DeviceMotionService.java index 7d7a0f05e36e4..b4d5759dcb9a7 100755 --- a/core/java/android/webkit/DeviceMotionService.java +++ b/core/java/android/webkit/DeviceMotionService.java @@ -99,6 +99,7 @@ final class DeviceMotionService implements SensorEventListener { mUpdateRunnable = new Runnable() { @Override public void run() { + assert mIsRunning; mManager.onMotionChange(new Double(mLastAcceleration[0]), new Double(mLastAcceleration[1]), new Double(mLastAcceleration[2]), INTERVAL_MILLIS); @@ -157,6 +158,11 @@ final class DeviceMotionService implements SensorEventListener { assert WebViewCore.THREAD_NAME.equals(Thread.currentThread().getName()); assert(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER); + // We may get callbacks after the call to getSensorManager().unregisterListener() returns. + if (!mIsRunning) { + return; + } + boolean firstData = mLastAcceleration == null; mLastAcceleration = event.values; if (firstData) { diff --git a/core/java/android/webkit/DeviceOrientationService.java b/core/java/android/webkit/DeviceOrientationService.java index f3c057627a22b..47c8ab79b9189 100755 --- a/core/java/android/webkit/DeviceOrientationService.java +++ b/core/java/android/webkit/DeviceOrientationService.java @@ -188,6 +188,7 @@ final class DeviceOrientationService implements SensorEventListener { assert(event.values.length == 3); assert WebViewCore.THREAD_NAME.equals(Thread.currentThread().getName()); + // We may get callbacks after the call to getSensorManager().unregisterListener() returns. if (!mIsRunning) { return; }