Android:没有内存分配的读取加速度计?

Gre*_*che 6 memory performance android accelerometer

我正在开发Android游戏(2.1+),使用加速度计作为用户输入.我使用传感器监听器,我在活动开始时使用传感器管理器注册,如下所示:

mSensorManager.registerListener(SystemRegistry.inputSystem.mSensorListener,
                                accSensor, SensorManager.SENSOR_DELAY_UI);  
Run Code Online (Sandbox Code Playgroud)

这很好用,我只是读取加速度计值onSensorChanged(SensorEvent event),以便在我的游戏循环中使用它:

public void onSensorChanged(SensorEvent event){
     accX = event.values[0];
     accY = event.values[1];
     accY = event.values[2];
 }
Run Code Online (Sandbox Code Playgroud)

我正在写一个实时游戏,所以我试图避免在我的代码中进行任何内存分配,因为我想最小化垃圾收集.问题是,每次存在时SensorEvent,传感器管理器实际上都会分配内存.以下是ddms分配跟踪器的输出:

51  28  android.hardware.SensorEvent    9   android.hardware.SensorManager$ListenerDelegate createSensorEvent   
50  28  float[] 9   android.hardware.SensorEvent    <init>  
Run Code Online (Sandbox Code Playgroud)

表示在每个事件中分配28*2 = 56个字节.这似乎有经常触发垃圾收集器的效果,这会导致一些滞后......所以这是我的问题:有没有办法实现相同的事情(获取当前的加速度向量),而不分配任何内存?有没有办法在不等待事件的情况下实际读取此向量的值?

Rom*_*Guy 3

听起来我们需要修复一些问题,我将在内部提交一个错误。