У меня есть Сервис, который находится в другом процессе, определенном в Манифесте, и MapboxMap
Активность, и я просто хотел узнать, как я могу общаться между моей Сервисом и Активностью, используя LocalBroadcastManager
.
Я пытался передать контекст службы на LocalBroadcastManager.getInstance()
, а затем зарегистрировать LocalBroadcast
в своей активности. Он успешно регистрируется, но не может получить информацию от моего Сервиса!
Вот мой код в моем Службе ...
Intent locationIntent = new Intent("LocationIntent");
locationIntent.setAction("updatedLocations");
locationIntent.putExtra("list",updatedList);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(locationIntent);
... и я регистрирую это в своей активности:
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceive``r(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Timber.tag("localB").d("registered!");
if (intent != null && intent.getAction() != null &&
intent.getAction().equals("updatedLocations")) {
sawLocationsList = (HashMap<Integer,
MarkerItem>)intent.getSerializableExtra("list");
Timber.tag("sawL").d("updated");
}
}
} , new IntentFilter("LocationIntent"));
Когда я запускаю приложение, моя служба отправляет широковещательную рассылку, но моя активность не получает широковещательное сообщение!
Я думаю, что проблема в том, что мое Служение определено в другом процессе в моем Манифесте, как этот ...
android:name=".services.ForegroundService"
android:enabled="true"
android:exported="false"
android:process=":ForegroundService"
... но я хотел бы общаться таким образом, потому что участие в другом процессе помогает моим целям эффективности использования батареи.