Android歌词秀设计思路(6)运用Proxy设计模式简化歌词播放服务(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-01-01 13:14 点击:

    // supporting component replacement by other applications).
    bindService(new Intent(Binding.this,
            LocalService.class), mConnection, Context.BIND_AUTO_CREATE);
    mIsBound = true;
}

void doUnbindService() {
    if (mIsBound) {
        // Detach our existing connection.
        unbindService(mConnection);
        mIsBound = false;
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    doUnbindService();
}
 
代码本身不算复杂,但是有一点比较讨厌,用户在调用doBindService方法以后,不能立即得到可供使用的服务的实例(mBoundService)。要想使用可供使用的服务的实例,必须要等到ServiceConnection的onServiceConnected方法被调用之后才可以。多少还是有一些不方便的。怎么解决这个问题呢。
这里我们使用了Proxy(代理)设计模式。在GOF设计模式中代理模式的几个例子有远程代理,虚代理,保护代理,智能指引等,这里的用法和虚代理比较相似,但目的不同。虚代理的目的是有关资源的,这里是为了简化使用。
找一个生活中真正代理的例子说明一下这种区别吧。
说有一个大牌明星要举办一场演唱会,当然事前要做好多准备工作,比如开会啦什么的,如果每次都是大牌亲自去,一个是档期排不开,另外也太贵了,于是好多事就由经纪人代劳,直到真正演出是大牌才出场。这叫虚代理。
和大牌同一个经济公司有一个刚入行的小演员,公司也给他指派了经纪人。由于他还不能独立演出,公司就安排他给大牌垫场。可是这人有个毛病,早上爱睡懒觉,经常迟到。于是公司就指派他的经纪人先去接受任务,等小演员来了在转告给他。这样就不会耽误大牌的演出了。
这就是我们今天要说明的场景。为了减轻使用者的负担,我们运用了Proxy模式。
先看看数据成员。
private LyricPlayerService mPlaybackService =  null ;
这就是我们的小演员了。经济人虽然不迟到,但是戏还是要演员演。这是我们真正实现功能的服务。
 
接下来就是需要交代给演员做的事了。现有经纪人保管着。
private ServiceConnectionListener mConnectionListener = null;
private LyricPlayerService.LyricPlayerListener mLyricListener = null;
private MediaPlayerService.NotificationProvider mNotificationProvider = null;
 
当然了,一旦见到小演员,把接到的任务交代给他那也是必须的。
 
private ServiceConnection mPlaybackConnection = new ServiceConnection() {    
          public void onServiceConnected(ComponentName className, IBinder service) {      
              mPlaybackService = ((LyricPlayerService.LocalBinder)service).getService(); 
              mPlaybackService.setLyricPlayerListener(mLyricListener); 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1