Виртуальный дисплей с Media Projection занимает много секунд, чтобы остановить / разорвать? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть приложение, которое использует MediaProjection / Virtual Display в службе.

Когда все запускается и разрешение на запись экрана принимается, в строке состояния появляется значок, указывающий, что у меня есть разрешение (этозначок приведения в действие, запускаемый системой, я не показываю его вручную)

Когда пользователь покидает мое приложение, я запускаю процесс удаления, который запускается практически сразу, но даже после выполнения всего метода удаления требуется 3-Через 4 секунды после последнего оператора журнала, чтобы фактически удалить значок из строки состояния.

Это просто нормально, или есть какой-нибудь более быстрый способ, которым я могу остановить это?Я не хочу, чтобы это выглядело так, как будто мое приложение все еще может записывать экран пользователей после того, как они покинули мое приложение, как это выглядит сейчас.

fun tearDownMediaProjection() {
    Log.("TearDown", "Starting Teardown"
    virtualDisplay?.release()
    mediaProjection?.unregisterCallback(mediaProjectionCallback)
    mediaProjection?.stop()
    mediaProjection = null
    Log.("TearDown", "Ending Teardown"
}

Когда я тестирую это вотладчик, если я вызову этот метод с точкой останова на mediaProjection = null, подождите несколько секунд и затем продвиньтесь через нулевой шаг, значок сразу исчезнет, ​​так что нулевая строка - это та, которая это делает, но толькопосле задержки?

Есть ли какие-либо предложения по более быстрому способу сделать это, которые могут быть неочевидны?

Кроме того - Когда моя служба запускается, значок появляется немедленно, поэтому нет задержки для его запуска?

...