架构

6个月前 阅读 151 评论 0 赞 0

音频后台播放

概要:

Fragment实现界面接受用户操作
Mediaplayer在service里实现
startService()方法启动–与activity无关

传递:

Fragment 向 service传递

  1. 使用Intent发送通过extra传递信息
  2. Service在onStartCommend()方法中接受处理

    1. /----fragment类-------/
    2. //创建Intent
    3. Intent intent = new Intent(MusicService.ACTION_PLAY);
    4. intent.putExtra(Constant.REQUEST_PLAY_ID, mAdapter.getItem(position)
    5. .getId());
    6. //通过extra发送消息
    7. intent.putExtra(Constant.CLICK_ITEM_IN_LIST, true);
    8. mActivity.startService(intent);
    1. /-----service类--------/
    2. // 这里定义的是我们准备处理的Intent的各种动作标记,在这里定义仅仅是为了方便引用,
    3. // 真正要让本service处理这些动作,要在AndroidManifest.xml中<service>里的<action>标签内声明它们
    4. public static final String ACTION_PLAY = "com.lq.musicplayer.action.PLAY";
    5. /**
    6. * 通过startService()启动本服务会调用此方法,在此接受并处理发送方传递的Intent。
    7. * 根据传递过来的Intent的action来作出其要求的处理。
    8. */
    9. @Override
    10. public int onStartCommand(Intent intent, int flags, int startId) {
    11. String action = intent.getAction();
    12. //通过传递过来的action字符串来判断调用什么
    13. if (action.equals(ACTION_PLAY)) {
    14. }

    Service向Fragment发送信息 –实现界面的刷新

  3. fragment向service注册回调接口
  4. service通过回调方法向fragment传递数据

    1. /---fragment----/
    2. // 在Fragment可见时绑定服务 ,以使服务可以发送消息过来
    3. getActivity().bindService(
    4. new Intent(getActivity(), MusicService.class),
    5. mServiceConnection, Context.BIND_AUTO_CREATE);
你的支持将鼓励作者继续创作

评论(0)

(无)