【问题标题】:Get music file in windows phone 8.1 runtime too slow在 windows phone 8.1 运行时获取音乐文件太慢
【发布时间】:2015-04-21 00:49:13
【问题描述】:

我正在使用 Windows Phone 8.1 运行时音乐库中的音乐。但是有问题。它太慢了。在 Windows Phone 8.0 或 8.0 Silverlight 中,当我使用 Microsoft.Xna.Framework.Media 时,它非常快。在 WP 8.1 运行时,我不能使用 XNA,我必须使用 KnownFolders.MusicLibrary。 例如:

App.listMusicFiles = await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);

for (int i = 0; i < App.listMusicFiles.Count; i++)
{
    MusicProperties musicProperties = await App.listMusicFiles[i].Properties.GetMusicPropertiesAsync();
App.listSongs.Add(new DeviceSongModel(i, musicProperties.Title, musicProperties.Artist, App.listMusicFiles[i].Path,     App.listMusicFiles[i].ContentType, musicProperties.Album, musicProperties.Duration.Ticks, ""));

}

它非常非常慢。但为什么呢?

【问题讨论】:

    标签: c# windows-phone-8 windows-phone-8.1


    【解决方案1】:

    您看到的问题可能是因为这里的这一行:

    await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);
    

    在幕后,它遍历every music file on the entire device,创建每个文件的内存表示,并将表示编组回您的应用程序进程。

    执行此操作的更好方法是使用await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName,index,batchSize); 一次仅获取固定大小的一批文件。这将限制返回的文件数量。然后,您可以在后台请求下一批时处理返回的文件。

    【讨论】:

    • 感谢亚当!但我认为问题在于获取音乐信息的循环。 GetFilesAsync() 快速获取所有音乐文件!
    • 有没有更快的方法来检索音乐属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多