Одним из них является, например, токен обновления. При обновлении токенов я получаю новый токен обновления с сервера oauth и сохраняю его в зашифрованном файле общих настроек. Когда поток завершается, я удаляю все задействованные объекты и запускаю сборщик мусора. Хотя эти адреса памяти освобождаются, они не стираются. Если я создам дамп памяти процесса с помощью Fridump, я увижу созданный им строковый файл:
Код: Выделить всё
$ grep -A 1 refresh_token ./dump/strings.txt
refresh_token
v1.MhgzhXC5U64v9ZfN3SFfuuPFyMYeSJ7XmQRkiNZPVSBSICYVU6CbGRWQ0ZY5obd_UmRnvR7wLatNQs3aQksmrZU
Проблема в том, что если пользователь отправляет приложение в фоновый режим или выходит из приложения сразу после POST токена обновления (и, таким образом, перестает с ним взаимодействовать), новый токен обновления живет в памяти процесса до тех пор, пока Android не потребуются его ресурсы и не закроет приложение. Это может занять очень много времени.
В Java или Kotlin у нас нет прямого доступа к памяти, как в неуправляемых языках, таких как C++, и поэтому мы не можем стереть области памяти. .
Может ли кто-нибудь, кто сталкивался с такой ситуацией, дать мне совет?
Подробнее здесь: https://stackoverflow.com/questions/783 ... in-android