2016-02-12 168 views
1

这是我的第一个问题。我一直搜索,尝试了很多,但无法得到我想要做的。问题在于:我有一个使用SoundPool播放声音的应用程序,就是这样。但是需要加载很多(> 50),并且需要一段时间才能加载。看一看;当应用程序启动时将SoundPool加载到线程中

@Override 公共视图onCreateView(LayoutInflater充气,容器的ViewGroup, 捆绑savedInstanceState){ 视图视图= inflater.inflate(R.layout.fragment_fragment_hue,容器,FALSE); DBSupport.setContext(getActivity()); lista = DBSupport.getListaHue();

sp = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); 

    final ArrayList<CharSequence> lista_string = new ArrayList<CharSequence>(); 

    for (int i = 0; i < lista.size(); i++) { 

     Hue e = null; 
     e = lista.get(i); 
     e.setValor(sp.load(getActivity(), getResId(e.getNome_hue(), ListaHues.class), 1)); 
     lista_string.add(lista.get(i).getDescricao()); 
    } 

我想打一个线程或异步,而我通过ListView控件

任何意见滚动加载它?

PS:我是一个新手,很抱歉,如果代码是混淆。

谢谢!

回答

0

你需要做的是加载你想在你的活动中能够在onCreate()开始的时候播放的所有声音。在任何声音上调用load()之前,您还应该设置一个带有setOnLoadCompleteListener()的单个侦听器,该侦听器计算出所有声音何时加载完毕。只有在声音完成后,才能尝试播放它们。

如果您需要在用户与您的用户界面进行交互之前将所有声音全部加载完毕,则可能需要提供某种等待指示符,直到完成所有声音。完成后,显示您的用户界面。然后只需要play声音,它应该立即开始播放。

+0

我可以设置活动中的所有声音值,但我必须加载每个片段!问题是需要加载两倍的时间。我想我必须提供一个加载屏幕......但感谢您的帮助! –

相关问题