android 用Parcelable在组件中传递List集

来源:互联网 发布:ubuntu控制台关机 编辑:程序博客网 时间:2024/06/06 05:24
我个人喜欢用Parcelable来传递,名称不一样但是实现的效果是一样的,都能往另一个组件传递完整的list。打个比方,我拿活动往服务里传递举例,其他的组件同理。如果背景是做一个音乐播放器,我要把活动中从SD卡读取到的所有歌曲存在list中,然后传递到负责播放音乐的service里,首先我应该对描述歌曲信息的类实现Parcelable接口。

public class MusicInfo  implements Parcelable {private int m_musicId;private String m_musicPath;private String m_musicTitle;private String m_musicSinger;private int m_duration;





然后新建intent,用putParcelableArrayListExtra方法并startService.


Intent service=new Intent(MainActivity.this,MusicService.class);service.putParcelableArrayListExtra("mp3Infos",(ArrayList<? extends Parcelable>) musicList);startService(service);





接着,在服务中接收传递的list


@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.i("music service", "oncreate");mediaplayer = new MediaPlayer();mp3Infos = intent.getParcelableArrayListExtra("mp3Infos");return super.onStartCommand(intent, flags, startId);}




其实如果list并不特别大的情况下,不用传递,直接写活动里写全局的List变量然后在Service中引用直接用可以了,parcelable,serializable,全局变量三种方式都能达到要求
0 0