码迷,mamicode.com
首页 > 移动开发 > 详细

手机影音第十六天,集成eventbus代替广播

时间:2017-07-30 23:47:58      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:利用eventbus代替广播传递对象   实现获取音乐信息   

        

        代码已经托管到码云上,有兴趣的小伙伴可以下载看看

        https://git.oschina.net/joy_yuan/MobilePlayer


一 EventBus 3.0   ---利用eventbus代替广播来获取音乐的数据。

    EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。

        1、下载EventBus的类库
                源码:https://github.com/greenrobot/EventBus

            在Android Studio里使用EventBus 的话,只需要在build.gradle里加入下面这句,然后sync一下即可。

compile ‘org.greenrobot:eventbus:3.0.0‘

        2、EventBus 的用法

            a 、注册EventBus,在需要订阅eventbus的activity中,注册eventbus即可

                如在AudioPlayerActivity中的onCreate里注册

                EventBus.getDefault().register(this);

            b、取消注册。在onDestroy里取消注册eventbus

                EventBus.getDefault.unregister(this);

            c、订阅事件

                  在Activity里订阅事件,当发布者发布相关的事件后,即可在此接收到

            这里要注意的是,订阅的方法,一定是public的,然后上面用注解说明订阅事件在哪个线程执行,以及优先级priority,,这个优先级类似有序广播的优先级。

/**
 * 订阅eventbus
 */
@Subscribe(threadMode=ThreadMode.MAIN,sticky = false,priority = 99)
public void showData(MediaItem item) {
    showViewData();
    checkPlayMode();
}

        d、发布事件.

            在AudioPlayerService里的准备播放音乐时,发布事件,将要播放的音乐的对象传过去,那么activity里订阅了该信息的即可接受到        

    /**
     * 准备好播放时回调
     */
    class MyOnPreparedListener implements MediaPlayer.OnPreparedListener {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onPrepared(MediaPlayer mp) {
           startAudio();
            //在这里发送广播,通知activity,播放的进度、音乐名称、歌唱家等信息
//            notifyChange(OPENAUDIOPLAYER);
            
            //EventBus发布信息
            EventBus.getDefault().post(item);
        }
    }


本文出自 “YuanGuShi” 博客,请务必保留此出处http://cm0425.blog.51cto.com/10819451/1952143

手机影音第十六天,集成eventbus代替广播

标签:利用eventbus代替广播传递对象   实现获取音乐信息   

原文地址:http://cm0425.blog.51cto.com/10819451/1952143

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!