从 BroadcastReceiver 启动服务从不调用 service.onStartCommand() 方法
Start Service from BroadcastReceiver never call service.onStartCommand() method
我有播放音频文件的音乐服务。我从 activity 开始这项服务。当我从发送广播接收器的通知中单击播放按钮时,我使用 play/pause 按钮发送通知并且它正在工作。在我调用 context.startService(intentService) 的 onReceive(Context context, Intent intent) 方法中,问题是 MusicService.onStartCommand() 从未调用过。
我的接收器
public class PlayEpisodeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Service Started", Toast.LENGTH_SHORT).show();
if(MusicService.isRunning()) {
Intent serviceIntent = new Intent(context, MusicService.class);
serviceIntent.putExtra(AppConstants.ACTION_TYPE, AppConstants.ACTION_PLAY);
context.startService(intent);
}
}
}
我的清单:
<service
android:enabled="true"
android:name=".backgroundtasks.MusicService">
<intent-filter>
<action
android:name = "cc.gm.oscarradio.backgroundtasks.MusicService">
</action>
</intent-filter>
</service>
<receiver
android:enabled="true"
android:name=".Receivers.PlayEpisodeReceiver">
<intent-filter>
<action android:name = "cc.gm.oscarradio.ACTION_MUSIC"/>
</intent-filter>
</receiver>
我觉得在你的代码中应该有一个细微的变化,你应该替换以下行:
context.startService(intent);
来自
context.startService(serviceIntent);
希望对您有所帮助。
我有播放音频文件的音乐服务。我从 activity 开始这项服务。当我从发送广播接收器的通知中单击播放按钮时,我使用 play/pause 按钮发送通知并且它正在工作。在我调用 context.startService(intentService) 的 onReceive(Context context, Intent intent) 方法中,问题是 MusicService.onStartCommand() 从未调用过。
我的接收器
public class PlayEpisodeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Service Started", Toast.LENGTH_SHORT).show();
if(MusicService.isRunning()) {
Intent serviceIntent = new Intent(context, MusicService.class);
serviceIntent.putExtra(AppConstants.ACTION_TYPE, AppConstants.ACTION_PLAY);
context.startService(intent);
}
}
}
我的清单:
<service
android:enabled="true"
android:name=".backgroundtasks.MusicService">
<intent-filter>
<action
android:name = "cc.gm.oscarradio.backgroundtasks.MusicService">
</action>
</intent-filter>
</service>
<receiver
android:enabled="true"
android:name=".Receivers.PlayEpisodeReceiver">
<intent-filter>
<action android:name = "cc.gm.oscarradio.ACTION_MUSIC"/>
</intent-filter>
</receiver>
我觉得在你的代码中应该有一个细微的变化,你应该替换以下行:
context.startService(intent);
来自
context.startService(serviceIntent);
希望对您有所帮助。