android-code-handler
来源:互联网 发布:ubuntu界面太小 编辑:程序博客网 时间:2024/04/30 18:16
来自于vlc 0.9.9版本
让handler持有 activity的弱引用,可以及时释放activity。
public abstract class WeakHandler<T> extends Handler { private WeakReference<T> mOwner; public WeakHandler(T owner) { mOwner = new WeakReference<T>(owner); } public T getOwner() { return mOwner.get(); }}
使用
/** * Handle libvlc asynchronous events */private final Handler eventHandler = new VideoPlayerEventHandler(this);private static class VideoPlayerEventHandler extendsWeakHandler<VideoPlayerActivity> {public VideoPlayerEventHandler(VideoPlayerActivity owner) {super(owner);}@Overridepublic void handleMessage(Message msg) {VideoPlayerActivity activity = getOwner();if (activity == null)return;// Do not handle events if we are leaving the VideoPlayerActivityif (activity.mSwitchingView)return;switch (msg.getData().getInt("event")) {case EventHandler.MediaParsedChanged:Log.i(TAG, "MediaParsedChanged");activity.updateNavStatus();if (!activity.mHasMenu&& activity.mLibVLC.getVideoTracksCount() < 1) {Log.i(TAG, "No video track, open in audio mode");activity.switchToAudioMode();}break;case EventHandler.MediaPlayerPlaying:Log.i(TAG, "MediaPlayerPlaying");activity.stopLoadingAnimation();activity.showOverlay();/** * FIXME: update the track list when it changes during the * playback. (#7540) */activity.setESTrackLists(true);activity.setESTracks();activity.changeAudioFocus(true);activity.updateNavStatus();break;case EventHandler.MediaPlayerPaused:Log.i(TAG, "MediaPlayerPaused");break;case EventHandler.MediaPlayerStopped:Log.i(TAG, "MediaPlayerStopped");activity.changeAudioFocus(false);break;case EventHandler.MediaPlayerEndReached:Log.i(TAG, "MediaPlayerEndReached");activity.changeAudioFocus(false);activity.endReached();break;case EventHandler.MediaPlayerVout:activity.updateNavStatus();if (!activity.mHasMenu)activity.handleVout(msg);break;case EventHandler.MediaPlayerPositionChanged:if (!activity.mCanSeek)activity.mCanSeek = true;// don't spam the logsbreak;case EventHandler.MediaPlayerEncounteredError:Log.i(TAG, "MediaPlayerEncounteredError");activity.encounteredError();break;case EventHandler.HardwareAccelerationError:Log.i(TAG, "HardwareAccelerationError");activity.handleHardwareAccelerationError();break;case EventHandler.MediaPlayerTimeChanged:// avoid useless error logsbreak;default:Log.e(TAG, String.format("Event not handled (0x%x)", msg.getData().getInt("event")));break;}activity.updateOverlayPausePlay();}};
0 0
- android-code-handler
- Android source code(7.1) message-Handler 机制
- android Handler
- android Handler
- android Handler
- android Handler
- Android Handler
- android---handler
- android-handler
- Android Handler
- Android Handler
- Android Handler
- android Handler
- android--Handler
- Android Handler
- Android Handler
- Android Handler
- Android Handler
- POJ 超详细分类
- UVa 10917 - Walk Through the Forest(Dijkstra + DFS)
- Java单例模式的各种写法(Initialization on Demand Holder模式)
- poj-1317
- WordPress中文tag标签出现404解决方案
- android-code-handler
- android虚拟机安装成功
- Supermap iserver client 空间查询关联属性过滤示例
- IOS控制器管理
- (2)JS语法注意事项(变量类型)
- Valid Palindrome
- ZXing二维码
- 韦东山视频第1期 学习计划
- CSS vertical-align的介绍