Исправление SoundManager.release ANR из файла trace.txt
Я получаю следующие ANR при вызове SoundPool.release(). Это не постоянный дефект, но происходит случайно. Следовательно, воспроизведение его отнимает много времени. Есть 2 способа исправить это, AsyncTask или Thread. Я не думаю, что смогу использовать здесь Handler, поскольку релиз не должен запускаться на UIThread.
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x400281b8 self=0xd088
| sysTid=3623 nice=0 sched=0/0 cgrp=default handle=-1345006464
| schedstat=( 22209377936 9072495824 21774 )
at android.media.SoundPool.release(Native Method)
Я исправил это с помощью темы
public SoundManager() {
releaseRunnable = new Runnable() {
@Override
public void run() {
synchronized (releaseRunnable) {
mSoundPool.release();
mSoundPool = null;
}
}
};
releaseThread = new Thread(releaseRunnable);
}
public void release() {
if (mSoundPool != null) {
releaseThread.start();
}
}
Я делаю это правильно?