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个字节.这似乎有经常触发垃圾收集器的效果,这会导致一些滞后......所以这是我的问题:有没有办法实现相同的事情(获取当前的加速度向量),而不分配任何内存?有没有办法在不等待事件的情况下实际读取此向量的值?
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |