Whi*_*e-E 6 android garbage-collection touch
我一直在阅读和调查touchEvents,主要是因为我的GC在有长时间的触摸/滑动事件或许多触摸事件时爆炸.如果我不触摸手机,它就会像GC_EXPLICIT我从DDMS执行的前几个中看到的那样只是空闲~5个物体.然后我开始触摸屏幕并四处滑动,物体在13513个物体周围拍摄,实际上造成了GC_FOR_MALLOC超过100毫秒.这是我的简单测试代码,下面是dalvicvm标记的日志.如果您有变通办法或原因的文档,或者甚至可能只是对此进行另一次深入讨论,我将不胜感激!干杯,祝你好运.
[码]
public class testClass extends Activity implements IOnSceneTouchListener{
int numberOfTouches = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
numberOfTouches++;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
[logcat的]
06-28 15:24:55.317: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 5 objects / 128 bytes in 53ms
06-28 15:24:55.903: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 5 objects / 136 bytes in 59ms
06-28 15:24:56.708: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 5 objects / 128 bytes in 59ms
06-28 15:25:06.614: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 6 objects / 168 bytes in 58ms
06-28 15:25:09.833: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 7 objects / 192 bytes in 65ms
06-28 15:25:14.270: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 8 objects / 232 bytes in 59ms
06-28 15:25:18.294: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 6 objects / 160 bytes in 59ms
06-28 15:25:33.942: DEBUG/dalvikvm(1103): GC_FOR_MALLOC freed 13513 objects / 1403264 bytes in 121ms
06-28 15:26:53.684: DEBUG/dalvikvm(2139): GC_EXPLICIT freed 140 objects / 6960 bytes in 99ms
06-28 15:26:58.731: DEBUG/dalvikvm(1215): GC_EXPLICIT freed 668 objects / 71136 bytes in 117ms
06-28 15:27:31.637: DEBUG/dalvikvm(1103): GC_FOR_MALLOC freed 13962 objects / 1504296 bytes in 122ms
06-28 15:27:44.723: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 63 objects / 2152 bytes in 59ms
06-28 15:27:46.676: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 5 objects / 128 bytes in 65ms
06-28 15:27:47.238: DEBUG/dalvikvm(2501): GC_EXPLICIT freed 5 objects / 128 bytes in 58ms
Run Code Online (Sandbox Code Playgroud)
我还没有真正解决这个问题,但偶然发现了这篇关于这个确切问题的精彩文章:Android Touch Problems
[编辑]正如斯特拉卡所说,这很可能是因为洪水泛滥.然而,我真正的问题是每个事件的分配情况如何?有没有办法重用这些事件/对象来限制触摸引起的分配?
我目前正在使用 andEngine,并且touchEvents被合并,所以最多应该从头开始分配〜5; 否则他们只是重复使用不是吗?
谢谢你的任何想法......
您使用的是旧版本的 Android 吗?我刚刚在Beginning Android Games中读到有关 Android 1.5 上的“触摸事件泛滥”问题的内容。作者的解决方法是在 onTouch() 处理程序中让 UI 线程短暂休眠,以限制接收的事件数量。我不知道该解决方案是否可行,或者是否对您有任何用处;本书的相关页面可以在这里找到:
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |