From 268e8794ab47e9247ee83f017245d05462aed978 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 29 Oct 2026 10:26:47 +0100 Subject: [PATCH] Document process lifetime voice ownership and core shutdown prerequisites --- doc/service_lifecycle.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 после остановки ядра. | Владелец | Ресурсы |