在 windows phone 中获取音乐文件 8.1 运行时太慢
Get music file in windows phone 8.1 runtime too slow
我正在 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, ""));
}
它非常非常慢。但是为什么?
您遇到的问题可能是因为此处的这一行:
await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);
在幕后,它正在遍历 every music file on the entire device,为每个文件创建一个内存中表示,并将该表示编组回您的应用进程。
更好的方法是使用 await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName,index,batchSize);
一次只抓取固定大小的一批文件。这将限制返回的文件数量。然后,您可以在后台请求下一批处理返回的文件。
我正在 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, ""));
}
它非常非常慢。但是为什么?
您遇到的问题可能是因为此处的这一行:
await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);
在幕后,它正在遍历 every music file on the entire device,为每个文件创建一个内存中表示,并将该表示编组回您的应用进程。
更好的方法是使用 await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName,index,batchSize);
一次只抓取固定大小的一批文件。这将限制返回的文件数量。然后,您可以在后台请求下一批处理返回的文件。