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"));