Я хотел знать, есть ли возможность, что мы могли бы обрабатывать/обнаруживать работающие обратные вызовы с задержкой (метод postDelayed
) на Android?
Например, у меня есть один или несколько заставок (которые работают с handler.postDelayed(new Runnable()...
) в моем приложении (приложение для тестирования). В этом приложении у меня также есть библиотека (которую я создаю и использую в приложении) и несколько доступных там классов, которые работают в классе IntentService
.
Иногда, когда приложение выполняет эти splashscreen
действия (для Testing purpose
), создаваемая библиотека может автоматически отображать некоторые действия в пользовательском интерфейсе. Но похоже, что если эти действия происходят в действии splashscreen
и что splashscreen
уничтожается, эти действия (которые всплывают автоматически) также будут уничтожены, и в logcat будет зарегистрировано сообщение "утечка окна".
Проблема в том, что :
- те действия, которые появляются автоматически в пользовательском интерфейсе, не должны автоматически закрываться, это запрещено. Ему требуется взаимодействие с пользователем для закрытия этой активности и возврата к нормальному поведению приложения.
- Кроме того, библиотека ничего не знает о пользовательском интерфейсе приложения.
Итак, мои вопросы (относительно стороны библиотеки, которую я создаю, не имея информации о потоке приложения пользовательского интерфейса):
- Есть ли способ определить, был ли в приложении создан какой-либо метод postDelayed относительно библиотеки? Если да, то как я могу справиться с проблемой?
P.S.: Обратите внимание, что обычно я использую диалоговое окно для предполагаемой активности, которая появляется автоматически.
ОБНОВЛЕНИЕ
Пояснение к схеме:
Прямо сейчас у меня есть случай, когда выполняется Splashscreen.
Класс, который расширяет класс IntentService, получил запрос из Интернета, который запускает Activity.
Тем временем заставка включена postdelayed
, другая активность создана и отображается в пользовательском интерфейсе. Когда пройдет X секунд, а другое действие не будет уничтожено, будет создано Следующее действие, которое автоматически уничтожит другое действие. При этом Android выдает сообщение об утечке окна относительно Activity.
Leaked Window
предупреждение никогда не закрывает какую-либо активность, это просто предупреждение. Проблема кроется где-то в коде, где был вызванfinish()
. - person Akash Kava   schedule 24.08.2017NextActivity
запускается, если я не ошибаюсь, Android SO удалитActivity
, вызвав функциюonDestroyed
. - person Damiii   schedule 24.08.2017OnStop
обязательно вызовут.OnDestroy
может быть вызван сразу после этого, через полчаса или даже никогда, если есть утечка объектов. - person rupps   schedule 25.08.2017