diff --git a/doc/service_lifecycle.md b/doc/service_lifecycle.md index 97f5584b..2b357de5 100644 --- a/doc/service_lifecycle.md +++ b/doc/service_lifecycle.md @@ -104,7 +104,11 @@ JNI init регистрирует callbacks/recorder; SQLite открывает `NativeLib.stop/destroy` снимает media-владельцев на main и ждёт native worker на IO. `HeadlessService` передаёт остановку в общий `CoreShutdown`, который переживает onDestroy; новый Service ждёт его до init. Отказ stop повторяется автоматически с backoff 250 мс..30 с, без нового Service/request. -Отмена одного ожидающего Service не отменяет очистку. Диагностика worker не считает живые ресурсы +Отмена одного ожидающего Service не отменяет очистку. AudioRecorderManager запрашивает cleanup вне main, +удерживает AudioRecord/AudioTrack и decoder handles до подтверждённого release, включая ViewModel.onCleared. +NativeLib не разрушает recorder до завершения этих владельцев; во время teardown новый capture запрещён. +Подготовка звонка также ждёт voice cleanup, а отмена звонка не отменяет это ожидание. +Диагностика worker не считает живые ресурсы frontend утечками: recorder освобождается bridge после остановки ядра. | Владелец | Ресурсы |