为了保持简单:我正在开发一个小应用程序,我们想要在彼此之后单击几个对象。在点击一个对象时,它应该发出声音。
这很好用,除了有时整个应用程序(包括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,index:11,flags:0) 01-17 14:52:10.174:D / AudioManager(17963):setStreamVolume(streamType:3,index:11,flags: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释放338K,49%免费3061K / 5895K,外部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;
}
答案 0 :(得分:0)
垃圾收集器正在做很多工作。您是否尝试在DDMS中运行Allocation Tracker以找出所有这些内存的分配位置?如果这是游戏,请确保您没有在主循环中创建大对象。
答案 1 :(得分:0)
Oke,Nevermind =(
经过一天的调试后,我发现我用同步方法创建了一个旧的死锁。奇怪的是,当它没有连接到PC时它总是如何继续。
我的错误!