当前位置: 首页 > 知识库问答 >
问题:

启动应用程序时在线程中加载SoundPool

宇文航
2023-03-14

这是我的第一个问题。我一路寻找,尝试了很多,但没有得到我想做的。问题是:我有一个应用程序使用SoundPool播放声音,仅此而已。但是要加载的东西很多(>50),一个一个加载需要时间。看一看;

@Override公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View View=inflater.inflate(r.Layout.Fragment_Fragment_Hue,container,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时加载它

有什么建议吗?

谢谢!!

共有1个答案

赫连开畅
2023-03-14

在这里,您需要做的是加载所有您希望在活动开始时能够在onCreate()中播放的声音。在对任何声音调用load()之前,还应该使用setOnLoadCompleteListener()设置一个侦听器,该侦听器可以计算出所有声音都已加载的时间。只有在声音完成后,你才应该尝试播放它们。

如果您需要在用户与UI交互之前完全加载所有声音,您可能希望提供某种等待指示器,直到完成所有声音。完成后,显示您的UI。然后简单地播放一个声音,当需要的时候,它应该立即开始播放。

 类似资料:
  • 当我的应用程序启动时,将创建一个executor服务(在java.util.concurrent中使用Executors.NewFixedThreadPool(maxThreadNum))对象。当请求到来时,executor服务将创建线程来处理它们。 当应用程序启动时,它将在executorService池中创建200个线程。 只是想知道当应用程序启动时,这是一种正确的创建线程的方法吗?还是有更好

  • 我正在尝试集成一个旧的weblogic应用程序来使用Okta SSO SAML2.0流。我已经使用@ServletCompenentScan成功地将应用程序与spring boot集成,并且能够成功地使用spring security进行基本身份验证。但是,当向SecurityConfiguration添加特定于SAML的配置时,应用程序在部署时会失败。关于okta saml,我将遵循本教程htt

  • 我有Java桌面应用程序,运行良好。我可以双击exe或运行jar文件并正常运行。 我想在系统启动时加载此应用程序。如何通过编程实现这一点? 或者,是否有任何工具可以以这样的方式创建exe,即一旦安装,就会在系统启动文件夹中创建快捷方式。 我希望它是系统或代码驱动的,而不是单独将exe放在启动文件夹中。

  • 我试图集成一个旧的weblogic应用程序来使用Okta SSO saml2.0流。我已经成功地使用@ServletCompenentScan将应用程序与Spring Boot集成,并且能够成功地使用Spring Security性进行基本身份验证。但是,当将特定于SAML的配置添加到SecurityConfiguration时,应用会在部署时失败。对于okta saml,我遵循这个教程https

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 问题内容: 我目前正在开发一个Python应用程序,希望在该应用程序上查看实时统计信息。我想使用它以使其易于使用和理解。 问题是我的Flask服务器应该在我的Python应用程序的最开始处启动,而在最末尾停止。它看起来应该像这样: 因为我需要我的应用程序上下文(用于统计),所以不能使用multiprocessing.Process。然后,我尝试使用threading.Thread,但是Werkze