Size: a a a

ReactiveX - русскоговорящее сообщество

2020 March 20

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Дмитрий
Это понятно, не в этом суть вопроса
Я очищаю подписки, чтобы данные не эмитились в пустые активити/фрагменты. Пока подписка жива (если я только не ошибаюсь), она держит подписчика, а значит мы имеем большую утечку памяти.
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Когда же имеем дело с простыми объектами - ссылку на них холдит фрагмент/активити и  тут уже надо смотреть, как работает gc. А gc удаляет из памяти объекты на которые нет ссылок. соответственно вычищаются активити, фрагменты, потом все объекты, на которые они хранят ссылки итд
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Следовательно разница такая - когда мы убиваем подписки - мы убиваем ссылки на крупные объекты, давая gc возможность их убить, чтобы в дальнейшем уничтожились объекты, которые хранятся в них
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Я может не совсем корректен, но в целом дело обстоит так
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
iamthevoid
Я очищаю подписки, чтобы данные не эмитились в пустые активити/фрагменты. Пока подписка жива (если я только не ошибаюсь), она держит подписчика, а значит мы имеем большую утечку памяти.
Потому что подписчик - это активити или фрагмент, это подразумевается
источник

Д

Дмитрий in ReactiveX - русскоговорящее сообщество
iamthevoid
Потому что подписчик - это активити или фрагмент, это подразумевается
а чем отличается объект Subscriber любого другого объекта? он же тоже имеет ссылку и Activity хранит эту ссылку?
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Субскрибер это лямбда или анонимный класс-релизация интерфейса Subscriber - обычно делает что? Сетит данные в активити. И (по крайней мере в джаве*) это создаёт утечку, потому что он захватывает ссылку на активити
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
* Была хорошая статья про то, что котлин не захватывает активити и не создаёт утечек, но мне лень искать
источник

Д

Дмитрий in ReactiveX - русскоговорящее сообщество
iamthevoid
* Была хорошая статья про то, что котлин не захватывает активити и не создаёт утечек, но мне лень искать
Ладно спасибо, в любом случае стало более понятней
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Дмитрий
Ладно спасибо, в любом случае стало более понятней
Почитай, как работает GC в андроид. И вообще про всё это. Это частенько спрашивают на собесах, да и вообще полезно знать
источник

Д

Дмитрий in ReactiveX - русскоговорящее сообщество
Оке
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Типы ссылок, как и когда очищает, вот это вот всё
источник
2020 March 21

M

Mikhail in ReactiveX - русскоговорящее сообщество
iamthevoid
* Была хорошая статья про то, что котлин не захватывает активити и не создаёт утечек, но мне лень искать
ну как минимум он захватит вьюху в которую будет сеттить состояние, нет? или там если через синтетик, то этот синтетик станет null после destroy?
источник

i

iamthevoid in ReactiveX - русскоговорящее сообщество
Mikhail
ну как минимум он захватит вьюху в которую будет сеттить состояние, нет? или там если через синтетик, то этот синтетик станет null после destroy?
источник

M

Mikhail in ReactiveX - русскоговорящее сообщество
окей, не знал что джава всегда захватывает внешний контекст, думал оно и там как в котлине
источник

DT

DigitalKoi Taras in ReactiveX - русскоговорящее сообщество
Всем привет. А есть способ маппить исключения в rx?
источник

AD

Aleksey D. in ReactiveX - русскоговорящее сообщество
DigitalKoi Taras
Всем привет. А есть способ маппить исключения в rx?
onError[Resume|Return]
источник

DT

DigitalKoi Taras in ReactiveX - русскоговорящее сообщество
Aleksey D.
onError[Resume|Return]
Мы через этот оператор разве можем вернуть Throwable?
источник

AD

Aleksey D. in ReactiveX - русскоговорящее сообщество
DigitalKoi Taras
Мы через этот оператор разве можем вернуть Throwable?
Single.error { RuntimeException() }
источник

AD

Aleksey D. in ReactiveX - русскоговорящее сообщество
допускаю, что можно просто через throw кинуть
источник