получатели предназначены для безгражданства. вы должны предположить, что сам объект-получатель уничтожен после возврата onReceive()
. в целях памяти, Android не держит ваше приложение вечно в памяти.
то, что вы пытаетесь сделать, невозможно. Вы пытаетесь реализовать наблюдаемый шаблон поверх приемника, за исключением того, что, как вы узнали, вы не можете отслеживать набор наблюдателей между вызовами приемника.
Трудно сказать вам, как решить эту проблему, не зная общего контекста вашего приложения. если все наблюдатели являются объектами без сохранения состояния, вы можете сохранить набор наблюдателей типов в настройках, используя фабрику для их повторного создания по мере необходимости. например, в onReceive()
,
String[] listeners = mPrefs.getString("listeners").split("|");
for (String l : listeners) {
MyListener listener = ListenerFactory.obtain(l);
listener.onWhatever(...);
}
или вы можете использовать базу данных sqlite, что угодно, что плавает на вашей лодке.
другая идея состоит в том, чтобы сериализовать ваши слушатели в sqlite db как BLOB по мере их регистрации, десериализовать их в приемнике, выполнить обратный вызов и повторно сериализовать в DB.