无法从服务中的意图中获取自定义对象

时间:2015-09-04 13:54:42

标签: android android-intent

我正在制作一个音乐播放器。当我在自定义对象中向MyService发送服务信息和播放列表时,MyService无法从intent获取它并返回null

向Myservice发送意图:

Intent intent = new Intent(getActivity(), MyService.class);
                intent.putExtra("command", list.get(position));
                intent.putExtra("dataBase", serviceInfo);
                getActivity().startService(intent);`

尝试从意图

获取MyService中的服务信息
serviceInfo = (SettingsAndPlaylist) intent.getSerializableExtra("dataBase");
            position = serviceInfo.getPosition();
            repeatController = serviceInfo.isRepeat();
            playList = serviceInfo.getPlayList();
带有设置和播放列表的

对象是可实现的,并且在发送意图中不为空

player sources

2 个答案:

答案 0 :(得分:0)

嗯,您的可序列化类读取:

public class SettingsAndPlaylist implements Serializable {
    private static List playList;
    private static int position;
    private static boolean repeat;
    private static boolean random;

序列化适用于对象实例字段,静态字段。 顺便说一句,你还应该声明一个serialVersionUID。

有关这两点的详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

答案 1 :(得分:0)

不确定从onStartCommand返回的是哪些标记,您是否尝试过不同的标记,例如START_REDELIVER_INTENT

如果您正在使用START_STICKY,则需要为空意图做好准备。