使用intent,extras等使用startService(intent)将数据传递给服务没有问题
Intent intent = new Intent();
intent.setClass(MainActivity.this, MediaPlayerService.class);
intent.setAction(MediaPlayerService.PLAY_PAUSE);
intent.putExtra("URI", URI);
intent.putExtra("TITLE", content.toString());
//PendingIntent.getService(MainActivity.this, 0, intent, 0);
startService(intent);
问题是该服务是使用MediaPlayer播放音乐的后台服务。每次我害怕它可能会产生多个玩家时使用startService,最终我得到一个ANR(即使一切都运行顺利)
我需要的是告诉MusicPlayerService播放新曲目。有任何想法吗?从代码中我可以看到我也尝试了PendingIntent(在网上建议),但它似乎没有用
谢谢!
答案 0 :(得分:2)
每次我担心它可能会产生多个玩家时使用startService
没有。您的服务将恰好为零或一个实例。如果服务已经启动,startService()
不会启动第二个实例,而只是调用现有实例的onStartCommand()
。
最终我得到一个ANR
堆栈跟踪应指出困难的来源。
答案 1 :(得分:1)
绑定到您的服务并通过Messenger发送您的消息。
答案 2 :(得分:0)
解决! 我查了一下,如果我做了
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Log.d(TAG,"super called "+startId);
...
我看到startId不断增加并最终给予超时。通过致电
解决stopService(intent)
...
startService(intent)
如此简单而又令人头疼的事情要找到它!