Когда моя служба запущена, и я вижу свое приложение на экране, все работает нормально. Мой сервис отправляет широковещательные сообщения, и я могу видеть их в моей «MainActivity». Но как только я нажимаю кнопку «домой», и мое приложение больше не находится на переднем плане, оно останавливается. Служба все еще работает, но трансляции не поступают в мое «мертвое» или «приостановленное» приложение. Это мой код:android: как получать трансляцию из службы, когда приложение неактивно
Основная деятельность:
onCreate:
Intent intent = new Intent(getApplicationContext(), MainGate_Service.class);
startService(intent);
@Override
protected void onStart() {
super.onStart();
LocalBroadcastManager.getInstance(this).registerReceiver(ServiceReceiver, new IntentFilter("MainGate_ring"));
}
@Override
protected void onStop() {
super.onStop();
LocalBroadcastManager.getInstance(this).unregisterReceiver(ServiceReceiver);
}
private BroadcastReceiver ServiceReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("ServiceMessage");
if(message != null) {
if(alarmActive && message.equals("ring"))
new soundPlayer().execute();
}
setNoti(message);
}
Услуги:
@Override
protected void onHandleIntent(Intent intent) {
ring = rcv_ring();
Intent ServiceIntent = new Intent("MainGate_ring");
ServiceIntent.putExtra("ServiceMessage", ring);
LocalBroadcastManager.getInstance(this).sendBroadcast(ServiceIntent);
}
Я думаю, что ваша логика имеет некоторые проблемы. Что бы вы ни делали, почему бы вам не сделать это внутри службы? –
просто зарегистрируйте приемник в манифесте, а не внутри. – Radhey