【发布时间】:2015-10-28 18:12:26
【问题描述】:
我有几页,其中一页是图书馆页面。在那个库页面上,我得到了从我网站上的 php 文件反序列化的歌曲,并且该 php 文件从 mysql 数据库请求歌曲标题、艺术家姓名等。
当我尝试将歌曲添加到 itemGridView 时,一切正常。当我从 itemGridView(Windows phone 10 和 Windows 10 上的背景)中选择一首歌曲时,一切正常。
问题是,当我尝试从轨道切换时,传输控件卡住了,2 秒后它消失了。我做错什么了吗?我只是从背景样本中复制了所有内容。
这是我将歌曲添加到 gridView 时的代码:
private HttpClient httpClient;
public start()
{
this.InitializeComponent();
httpClient = new HttpClient();
// Limit the max buffer size for the response so we don't get overwhelmed
httpClient.MaxResponseContentBufferSize = 256000;
httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
this.NavigationCacheMode = NavigationCacheMode.Required;
Instance = this;
Loaded += Start_Loaded;
initializeSongs();
backgroundAudioTaskStarted = new AutoResetEvent(false);
itemGridView.ItemsSource = Songs;
}
async void initializeSongs()
{
try
{
HttpResponseMessage response = await httpClient.GetAsync("http://www.myproductsofficial.eu/testt.php");
string array = await response.Content.ReadAsStringAsync();
string json = array;
MessageDialog mes = new MessageDialog(json);
await mes.ShowAsync();
var xdd = JsonConvert.DeserializeObject<List<RootObject>>(json);
foreach (var xd in xdd)
{
var song = new SongModel();
song.Title = xd.SongName;
song.Artist = xd.ArtistName;
song.Listens = xd.Listens;
song.AlbumArtUri = new Uri(xd.Thumbnail);
song.MediaUri = new Uri(xd.MediaLink);
Songs.Add(song);
}
foreach (var song in Songs)
{
var bitmap = new BitmapImage();
bitmap.UriSource = song.AlbumArtUri;
albumArtCache[song.AlbumArtUri.ToString()] = bitmap;
}
}
catch (Exception e1)
{
MessageDialog mes = new MessageDialog(e1.Message);
mes.ShowAsync();
}
}
private void itemGridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var song = itemGridView.SelectedItem as SongModel;
Debug.WriteLine("Clicked item from App: " + song.MediaUri.ToString());
// Start the background task if it wasn't running
if (!IsMyBackgroundTaskRunning || MediaPlayerState.Closed == BackgroundMediaPlayer.Current.CurrentState)
{
// First update the persisted start track
ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.TrackId, song.MediaUri.ToString());
ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.Position, new TimeSpan().ToString());
// Start task
StartBackgroundAudioTask();
}
else
{
// Switch to the selected track
MessageService.SendMessageToBackground(new TrackChangedMessage(song.MediaUri));
}
if (MediaPlayerState.Paused == BackgroundMediaPlayer.Current.CurrentState)
{
BackgroundMediaPlayer.Current.Play();
}
}
我检查了应用程序是否进入暂停模式和恢复模式。我还检查了背景音频的声明选项卡,入口点是:BackgroundAudioTask.MyBackgroundAudioTask
项目截图:http://prntscr.com/81mrlq BackgroundAudioTask:Windows 运行时组件 BackgroundAudioShared:类库(DLL)
【问题讨论】:
-
请说明您的问题,这太宽泛了。 Look here how to ask a good question。 Plus SO并不是真的打算找一个“老师”。如果您可以像上面的链接中描述的那样缩小您的问题范围,人们可能会帮助您。不过,您可能需要问不止一个问题。此外,可能已经回答了特定问题,这通常很有帮助,因为它们经过了编辑,并且在问题和答案方面可能具有更高的质量。尝试使用搜索,您会惊讶地发现您经常能找到一些东西。
-
@FrankJ 坦率地说,我问了太多问题但没有得到一个答案!!!
-
@FrankJ 更新了它。更好?
-
@Christos 没有得到答案是一个相当强烈的指标,表明问题写得不好,但还不足以吸引反对票或被关闭。他们只是被忽略了,这可能更糟。如果您想获得答案,您应该真的阅读编写好问题的指南。段落、标点符号、避免绒毛也有帮助
-
@PanagiotisKanavos 是的,但我的帖子真的很难理解吗,我的意思是:我只想让后台音频任务正常运行!