Android: делить объект между Сервисом в определенном процессе и деятельности

Как можно разделить объект между службой, запущенной в определенном процессе, и остальной частью моего приложения для Android?

В моем манифесте я установил process="com.test.myprocess" к сервисной декларации.

Я инициализирую объект "сеанс", когда мой пользователь входит в приложение в себе. Затем я запускаю службу Android, и в нее вводится объект сеанса с аннотацией Android. Но, когда я делаю session.getUuid() из моего введенного сеанса в моем сервисе я всегда получаю "ноль".

Если я делаю то же самое в процессе, соответствующем моему приложению (например, в UiThread), значение не равно нулю.

Спасибо

2 ответа

Вы связали сервис? Вы можете узнать немного об AIDL. Объект класса принадлежит только процессу, поэтому, когда вы используете Annotation для получения объекта сеанса в другом процессе, результат будет нулевым.

Для отправки объекта из Service для Activity Я бы предложил использовать функцию:

public void sendBroadcast(Intent intent);

Создать соответствующий Intent, поставьте свою переменную или дополнительный объект. Вы должны реализовать объект Serialisable интерфейс. Если он не может сериализовать его в JSON и передать строку. Как это:

Intent intent = new Intent();
intent.setAction("UNIQUE_BROADCAST_ID");
intent.putExtra("EXTRA_ID", ...);
this.sendBroadcast(intent);

В вашем Activity зарегистрировать BroadcastReceiver с конкретным кодом:

registerReceiver(receiver, new IntentFilter("UNIQUE_BROADCAST_ID"));
Другие вопросы по тегам