gpt4 book ai didi

android - 如何创建异步任务以在加载屏幕上将声音加载到管理器中

转载 作者:行者123 更新时间:2023-11-29 14:02:35 24 4
gpt4 key购买 nike

我过去的两个问题都很简短而且不够详细,所以这次我会尽力而为。我有一个大音板,大约有 430 个声音。它太大了,我必须在某些设备上创建 2 个声音管理器。无论如何,在加载屏幕上,我正在尝试实现一个 AsyncTask。我大致了解它的类型和它的4个步骤,但我不了解参数。这里有一个简单的 AsyncTask 供引用。

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {

}
return null;
}

protected void onProgressUpdate(Integer... progress) {

}

protected void onPostExecute(Long result) {

}
}

我需要在后台做的是像这样向我的经理添加声音: SoundManager2.addSound(415, R.raw.rubber);

拜托,这是我在这里的第三个问题,所以如果您需要任何其他信息,请不要犹豫,我会在接下来的 20 分钟内关注这个话题,我会根据信息快速编辑它!

最佳答案

在你给出的例子中......

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {...}

三种类型的 URL、Integer 和 Long(称为 Params、Progress、Result)可以是您需要的任何类型。

第一个 ( URL ) 是您必须传递给 .execute(<params>) 的参数类型你的方法AsyncTask实例。当您查看 doInBackground() 时更准确方法你会看到URL...这基本上意味着它将接受 URL 的数组.即使你只需要通过一个URL你仍然必须将它作为单项数组传递

URL[] myURLs = new URL[] {<comma-separated URLs here>};
new DownloadFilesTask().execute(myURLs);

doInBackground(URL... urls)您访问 URL 的方法作为urls[0] , urls[1]等或类似 for (URL u:urls) 的东西.

此示例中的第二个通用类型 ( Integer ) 是 onProgressUpdate(Integer progress) 期望的类型.同样,这必须作为数组传递。例如,如果您要下载 10 个文件,则在下载完每个文件后调用它。例如myProgress[0] = 1表示一个文件已经下载成功。这允许您更新某种进度对话框。

最后,第三个泛型类型 ( Long ) 再次在内部使用,类型为 onDoInBackground(...)必须返回并传递给 onPostExecute(Long result) .请注意,这是单个结果而不是数组。取决于您的结果将取决于如何 onPostExecute()应该行为。

正如我所说,您可以使用任何类型,包括通用 Void (注意大写字母)...

private class MyAysncTask extends AsyncTask<Void, Void, Void>

在这种情况下,您不会将任何内容传递给 .execute()虽然你仍然可以调用 publishProgress() (调用 onProgressUpdate() )你不能向它传递任何数据。同样,onPostExecute将不会收到任何实际结果数据。

关于android - 如何创建异步任务以在加载屏幕上将声音加载到管理器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com