为简单起见:我正在开发一个小应用程序,我们希望在其中单击多个对象。单击对象时,它应该播放声音。
这很好用,除了不时,整个应用程序(包括 LogCat 的日志记录)只是冻结大约 5 秒,之后它似乎赶上了。(所有线程冻结)我的意思是追赶;如果在冻结过程中继续点击,解冻后它仍然知道该怎么做。
日志很简单:
01-17 14:52:08.292: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:08.473: D/dalvikvm(17963): GC_CONCURRENT 释放 417K, 48%免费3113K/5895K,外接140K/647K,暂停2ms+4ms
01-17 14:52:09.033: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:09.484: D/AudioManager(17963): setStreamVolume(streamType: 3,索引:11,标志:0)01-17 14:52:10.174:D / AudioManager(17963):setStreamVolume(streamType:3,索引:11,标志:0)01-17 14:52:10.785:D /AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:15.169: D/dalvikvm(17963): GC_EXPLICIT freed 338K, 49% free 3061K/5895K, external 140K/ 647K,暂停 43ms
注意最后两个日志之间的 5 秒延迟。
我尝试删除所有音频,但这并不能解决任何问题。
正在记录的文本文件显然也不会影响任何事情。
有没有人知道如何解决这个烦人的问题?
提前致谢。
编辑:
在冻结期间暂停程序时,它指向某个方法。什么可能导致这种冻结:
public synchronized boolean removeEntity(long id)
{
for (Entity ent : this.entities)
if (ent.getId() == id)
return this.entities.remove(ent);
return false;
}