Что такое атрибут android:immersive в файле манифеста Android?

Я разрабатывал приложение для Google Glass и столкнулся с проблемой, связанной с моей активностью. Они заканчивались, когда я не взаимодействовал с ними в течение 7-10 секунд. После того, как экран выключился, и я постучал по своему стеклу, чтобы снова разбудить его, моя активность исчезла, и я был на экране ok Glass.

Я много искал, но не мог найти никакого решения для этого. Затем я наткнулся на этот атрибут android:immersive в Activity в файле AndroidManifest.xml.

После использования android:immersive="true" в моей деятельности (файл AndroidManifest.xml). Моя активность остается активной даже после истечения времени ожидания экрана, и моя активность возобновляется, когда я нажимаю на стеклянную сенсорную панель. Его поведение - это то, как я себе представлял поведение по умолчанию.

Итак, мне было интересно, что такое атрибут android:immersive и почему нет никакой документации по нему? Также этот атрибут доступен только в GDK?

Я прикрепляю журналы, которые были созданы жизненным циклом активности, чтобы люди могли лучше понять.

//LOGS GENERATED WHEN android:immersive="false" or NOT USED  

01-30 11:58:51.433: E/LifeCycle(5643): OnCreate()
01-30 11:58:51.433: E/LifeCycle(5643): onStart()
01-30 11:58:51.441: E/LifeCycle(5643): onResume()
01-30 11:59:05.566: E/LifeCycle(5643): onPause()
01-30 11:59:05.574: E/LifeCycle(5643): onSaveInstanceState()
01-30 11:59:05.581: E/LifeCycle(5643): onStop()
01-30 11:59:11.511: E/LifeCycle(5643): onRestart()
01-30 11:59:11.511: E/LifeCycle(5643): onStart()
01-30 11:59:11.535: E/LifeCycle(5643): onResume()
01-30 11:59:11.597: E/LifeCycle(5643): onPause()
01-30 11:59:11.988: E/LifeCycle(5643): onSaveInstanceState()
01-30 11:59:11.988: E/LifeCycle(5643): onStop()



//LOGS GENERATED WHEN android:immersive="true"

01-30 11:50:41.995: E/LifeCycle(4929): OnCreate()
01-30 11:50:41.995: E/LifeCycle(4929): onStart()
01-30 11:50:41.995: E/LifeCycle(4929): onResume()
01-30 11:50:56.324: E/LifeCycle(4929): onPause()
01-30 11:50:56.347: E/LifeCycle(4929): onSaveInstanceState()
01-30 11:50:56.347: E/LifeCycle(4929): onStop()
01-30 11:51:09.144: E/LifeCycle(4929): onRestart()
01-30 11:51:09.144: E/LifeCycle(4929): onStart()
01-30 11:51:09.167: E/LifeCycle(4929): onResume()

person Sheraz Ahmad Khilji    schedule 30.01.2014    source источник


Ответы (1)


«Пометить это действие как иммерсивное; иммерсивное действие не должно прерываться другими действиями или уведомлениями». из http://developer.android.com/reference/android/R.attr.html#immersive

Странно то, что этот флаг был доступен с уровня API 11, но «режим погружения», который представляет собой расширенный полноэкранный режим, был добавлен только на уровне API 19.

person TomTasche    schedule 30.01.2014
comment
Спасибо, Том. Еще одна вещь, которая меня беспокоила, - это разные способы поведения активности в зависимости от значения этого флага, истинного или ложного. У вас есть идеи, почему это так? - person Sheraz Ahmad Khilji; 30.01.2014
comment
Похоже, этот флаг говорит системе никогда не показывать ничего перед этой активностью. Я не знаю, что именно он делает. Я видел точно такое же поведение, как вы описали в своем вопросе, при разработке для Google Glass. Я использовал View.setKeepScreenOn: developer.android. com/reference/android/view/ - person TomTasche; 30.01.2014
comment
лол, так что я не единственный, кого смущает этот новый атрибут. В любом случае спасибо за помощь :) - person Sheraz Ahmad Khilji; 31.01.2014
comment
Я разрабатываю для XE16.11, и android:immersive=true не работает. Когда экран выключен, и я нажимаю на стекло, я вижу только карту часов... есть предложения? Я использую android:immersive="true" в действиях манифеста. - person Bae; 30.04.2014