android 用Parcelable在组件中传递List集

本文介绍如何在Android应用程序中利用Parcelable接口,通过Intent的putParcelableArrayListExtra方法将List集合有效传递到服务(Service)进行处理。
我个人喜欢用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


@Override
	public 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,全局变量三种方式都能达到要求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值