2016-02-24 3 views
5

Я нашел свою деятельность onStop() метод будет вызываться с задержкой менее 10 секунд. Я никогда не видел этого поведения.Android - onStop() вызывается с задержкой

Примечание: - Активность является singleTop и она начинается с Intent.FLAG_ACTIVITY_REORDER_TO_FRONT флагом.

Примечание: - Я использую Build Tools v23.0.2.

Задержка не была раньше, и метод будет называться немедленно.

+0

Не могли бы вы подробнее рассказать? Какая деятельность начинается? Как мне кажется, в этом вопросе есть как минимум 2 мероприятия. –

+0

@TinTran Согласен. Пожалуйста, предоставьте более подробную информацию. – JohnWatsonDev

+0

Вы отлаживали свой код?Пожалуйста, уточните свой вопрос, вставьте фрагмент кода с помощью logcat. Это поможет нам понять точную проблему. –

ответ

2

Я предполагаю, что вы начинаете другое действие, и вы ожидаете, что текущая активность получит обратный вызов onStop(). Согласно activity lifecycle, метод onPause() вызывается перед onStop(). В некоторых случаях onSaveInstance() также вызывается перед методом onStop(). Кроме того, когда вы вызываете startActivity или startActivityForResult (опять же, я предполагаю, что вы ожидаете, что onStop будет вызван), в зависимости от передаваемых параметров, если эти параметры необходимо вычислить/извлечь/etc, это может потребуется некоторое время, прежде чем система сможет выполнить startActivity, что было бы самым ранним, что Android инициирует вызовы жизненного цикла. В отсутствие какого-либо кода здесь невозможно увидеть, что еще выполняется, до вызова onStop. Я предлагаю вам проверить временную шкалу времени выполнения кода, начиная с startActivity и когда вызывается onStop, возможно, запустив отметки времени для каждого вызова, начиная с отметки времени перед вызовом startActivity, заканчивая отметкой времени в начале onStop, чтобы узнать, где потрачено время. Я также предлагаю упростить это, убедившись, что все параметры startActivity или startActivityForResult ранее установлены на их значения, если это еще не так.

0

Может быть эмулятор медленно сегодня

но OnStop() должна вызываться сразу как одной команды

нет OnPause() или что-нибудь вызывается перед этим

0

В моем случае, я останавливаю видеопроигрыватель при вызове onStop(), но вызов onStop() имеет задержку 10 с.

Вы можете использовать что-то вроде eventBus, RxBus чтобы опубликовать событие в

Application.ActivityLifecycleCallbacks { 

    //post event here.and check the activity's Name in my targetActivity which play my video. 
    onActivityStarted() 

} 
0

я имел такую ​​же проблему. Когда я начал работу с startActivity(), onStop() вызывался ровно через 10 секунд после onPause().

В моем случае в запущенном виде был фрагмент, который имел WebView. Я понятия не имею, почему, но если я удалил следующую строку, задержка составляла всего около 2 секунд.

webView.setScrollbarFadingEnabled(false);

0

если и хотят, чтобы решить эту проблему, просто зайдите в манифест и добавьте noHistory: истинный ур деятельности он будет вызывать на Stop непосредственно не более 10 секунд задержки. имел ту же проблему, что и исправил ее, также можно было бы передать ее программным способом в флагом, если вы хотите это сделать.

Смежные вопросы