Android 2.1.2, устройство заблокировано, но кажется, что onPause и onResume вызываются несколько раз

У меня есть приложение, которое использует MediaPlayer для воспроизведения музыки. Когда я играю музыку и блокирую свое устройство, оно начинает вызывать onPause и onResume в разные периоды времени (это не время одного трека)

Мой журнал выглядит так:

07-11 10:08:50.933: INFO/Activity(9956): resume PlayerActivity
07-11 10:08:50.948: INFO/Activity(9956): pause PlayerActivity
07-11 10:08:56.300: INFO/Activity(9956): resume PlayerActivity
07-11 10:08:56.316: INFO/Activity(9956): pause PlayerActivity
07-11 10:09:21.839: INFO/Activity(9956): resume PlayerActivity
07-11 10:09:21.886: INFO/Activity(9956): pause PlayerActivity
07-11 10:09:27.003: INFO/Activity(9956): resume PlayerActivity
07-11 10:09:27.019: INFO/Activity(9956): pause PlayerActivity
07-11 10:18:49.738: INFO/Activity(9956): resume PlayerActivity
07-11 10:18:49.745: INFO/Activity(9956): pause PlayerActivity

Это нормальное поведение активности Android? Там, где никакие кнопки не нажимались или что-либо еще не делалось с устройством.

С наилучшими пожеланиями


person Philiiiiiipp    schedule 11.07.2011    source источник


Ответы (2)


Да, это нормальное поведение Android. На основе выполняемого действия будет вызываться метод, соответствующий жизненному циклу. В каждом случае вам, возможно, придется переопределить соответствующий метод, чтобы получить требуемый результат.

person Andro Selva    schedule 11.07.2011
comment
Да, но никакого действия не выполняется, кажется, что onResume и onPause вызываются случайным образом. - person Philiiiiiipp; 11.07.2011
comment
Да, это модель жизненного цикла. Если это не влияет на вашу функциональность, вам не нужно об этом думать. - person Andro Selva; 11.07.2011

Есть способ избежать этого. Я считаю, что это связано с изменениями конфигурации при блокировке экрана. Если ваше приложение имеет альбомную ориентацию, а экран блокировки имеет портретную ориентацию, это изменение конфигурации. То же самое верно, если у вас есть кнопки навигации на экране, и они исчезают для экрана блокировки, что приводит к изменению размера экрана. В файле манифеста вы можете изменить изменения конфигурации для своей активности и указать их целую кучу. Это должно помешать Android перестраивать вашу активность каждый раз, когда вы блокируете экран, и остановит множество обратных вызовов onPause - onResume.

person Jens Zalzala    schedule 07.02.2013