Yahoo! Подключенные события воспроизведения ТВ
Я пытаюсь подписаться на onTimeIndexChanged
событие медиаплеера. Это работает хорошо, пока вид, что я подписываюсь в, остается сосредоточенным. Когда я нажимаю кнопку "Назад" или кнопку "Виджеты", мое изображение становится размытым и больше не получает события.
Возможно ли, чтобы эта подписка сохранялась при смене представлений? Существуют ли подписки для всего виджета?
Я пытаюсь выяснить, можно ли посчитать время воспроизведения на стороне клиента.
1 ответ
На Yahoo! также ответили Подключенные телевизионные форумы по адресу: http://developer.yahoo.net/forum/?showtopic=7383 Да, вы на правильном пути. Медиаплеер является одноэлементным и не привязан к какому-либо конкретному виду. Вы можете определить слушателя, который подписывается на него в глобальном контексте выполнения виджета. Таким образом, вы все равно можете получать и обрабатывать события, которые происходят, когда представление является gc'd, и вы все равно можете получать эти события.
Мы помещаем эти глобальные подписки в файл init.js, чтобы они находились в центре (лучшая практика).
EventHandlers.handlerPlayerEvent.subscribeTo(KONtx.mediaplayer, ['onStateChange', 'onTimeIndexChanged'], EventHandlers);
Затем в Javascript / core / EventHandlers.js:
var EventHandlers = {
//snipped for brevity;
handlerPlayerEvent: function(event) {
switch(event.type) {
case 'onStateChange':
switch(event.payload.newState) {
case KONtx.mediaplayer.constants.states.PLAY:
if(!this._snippetAdded) {
KONtx.application.addViewConfig({ id: 'snippet-nowplaying',
viewClass: VideoNowPlayingSnippetView});
this._snippetAdded = true;
}
перерыв;
case KONtx.mediaplayer.constants.states.UNKNOWN:
case KONtx.mediaplayer.constants.states.ERROR:
case KONtx.mediaplayer.constants.states.STOP:
case KONtx.mediaplayer.constants.states.EOF:
KONtx.application.removeView('фрагмент-nowplaying');
this._snippetAdded = false;
перерыв;
}
перерыв;
case 'onTimeIndexChanged':
//do something interesting;
break;
}
}
};
Я также должен добавить, что если вы подписываетесь на события в представлении, очень важно также отписаться от них в слушателе вида HideView. Это может предотвратить утечки памяти и другое нежелательное поведение.