Android SoundPool.play () sometimes lags

I am currently having a problem with my game on Android. Usually, when calling the SoundPool.play () function, it takes about 0.003 seconds to complete the function, but sometimes it takes 0.2 seconds, which makes me stutter. where could his anomaly come from?

+6
source share
1 answer

thanks to Tim, using Thread for the game seems to have successfully fixed the problem.

Topic

package org.racenet.racesow.threads; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import org.racenet.racesow.models.SoundItem; import android.media.SoundPool; /** * Thread for playing sounds * * @author soh#zolex * */ public class SoundThread extends Thread { private SoundPool soundPool; public BlockingQueue<SoundItem> sounds = new LinkedBlockingQueue<SoundItem>(); public boolean stop = false; /** * Constructor * * @param soundPool */ public SoundThread(SoundPool soundPool) { this.soundPool = soundPool; } /** * Dispose a sound * * @param soundID */ public void unloadSound(int soundID) { this.soundPool.unload(soundID); } @Override /** * Wait for sounds to play */ public void run() { try { SoundItem item; while (!this.stop) { item = this.sounds.take(); if (item.stop) { this.stop = true; break; } this.soundPool.play(item.soundID, item.volume, item.volume, 0, 0, 1); } } catch (InterruptedException e) {} } } 

Sounditem

 package org.racenet.racesow.models; /** * SoundItem will be passed to the SoundThread which * will handle the playing of sounds * * @author soh#zolex * */ public class SoundItem { public soundID; public volume; public stop = false; /** * Default constructor * * @param soundID * @param volume */ public SoundItem(int soundID, float volume) { this.soundID = soundID; this.volume = volume; } /** * Constructor for the item * which will kill the thread * * @param stop */ public SoundItem(boolean stop) { this.stop = stop; } } 
+5
source

Source: https://habr.com/ru/post/913369/


All Articles