Service如何向启动他的Activity传递数据?
比如说,一个Activity启动一个Service播放音乐,那这个Service如何将一些播放数据(播放到得位置等)传递给这个Activity来更新进度条等控件?

解决方案 »

  1.   

    Activity以绑定的方式使用Service,这样可以获取到Service对象,最后通过调用Service里的函数来检测播放进度,从而更新Activity中的相关界面组件。
      

  2.   

    先用startService启动服务,然后再通过bindService绑定服务,这样即使activity结束后,unbindService后service还在运行,不会退出,用aidl通信。
    参考android music源码。求助service播放器,activity,service与widget间的通信
    http://topic.csdn.net/u/20101029/15/2b0ea038-c379-44a8-86b7-40cd6431cdf8.htmlAIDL Demo源码实现Activity与Service进程间通信
    http://download.csdn.net/source/2156953
      

  3.   

    楼上正解,bindservice可以实现
      

  4.   

    或者用binder实现数据传递
    android 的Activity和Service之间的通信
    http://zhangyan1158.blog.51cto.com/2487362/491358
      

  5.   

    其实可以在activity里注册一个BroadcastReceiver  
    Service 里状态发生改变时,发送广播到activity里,更新数据或界面就行了
    activity里也可以发送广播到service里,控制播放,暂停等操作
    实现起来也很简单。
      

  6.   

    这个好像有个问题吧,如果是自定义的类型,用serializable的话怎么不允许?自定义的类实现了serializable接口的话就不能够广播,会出现Parcelable encounteredClassNotFoundException reading a Serializable object (name = ******)的错误,这个咋么办呀?我想让service传递给activity自定义的类型怎么传递呀?就得用aidl么?