Если на моем телефоне нажать кнопку питания, экран выключится.
Если нажать еще раз, экран снова включится, и я снова увижу свое приложение (блокировка экрана отключена).
Я вызываю этот цикл.
Если эта процедура выполняется один раз (один цикл), я могу нажать кнопку в своем приложении, и она будет менять цвет при каждом нажатии.
Однако, если я нажимаю кнопку питания дважды или более раз, графический интерфейс/пользовательский интерфейс/макет моего приложения больше не обновляется, и кнопка остается в том цвете, который был до нажатия кнопки питания.
Что сбивает с толку, так это то, что logcat по-прежнему показывает AADEBUG сообщения. Цвет просто не обновляется.
У меня нет опыта программирования приложений.
Нужно ли что-нибудь, например перефокусировать/обновить приложение?
/>Если я нажму кнопку «Обзор приложения» на панели навигации и выберу оттуда свое приложение, оно продолжит работать. Даже после нескольких циклов включения кнопки питания. Это также работает, если я использую блокировку экрана, но не хочу ее использовать.
Мое настоящее приложение более сложное, но я смог воспроизвести проблему даже в этом простом примере. Чего мне не хватает?
Код: Выделить всё
package com.example.testapp
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private var onetwo = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val testButton: Button = findViewById(R.id.btnPlay)
testButton.setOnClickListener {
if (onetwo == 0){
Log.d("AADEBUG", "one")
testButton.backgroundTintList = getColorStateList(R.color.white)
onetwo = 1
} else {
Log.d("AADEBUG", "two")
testButton.backgroundTintList = getColorStateList(R.color.purple_200)
onetwo = 0
}
}
}
override fun onResume() {
super.onResume()
Log.d("AAActivityState", "onResume called")
}
override fun onPause() {
super.onPause()
Log.d("AAActivityState", "onPause called")
}
override fun onDestroy() {
super.onDestroy()
}
}
Предполагается, что приложение будет работать на Sony Xperio XZ1 Compact с Android 9.
Блокировка экрана отключена.
Запущено только мое приложение.
Если я один раз нажму кнопку питания, дисплей выключится.
/>Если я нажму ее еще раз, приложение снова отобразится напрямую, поскольку блокировка экрана отсутствует.
Если я сделаю это дважды или чаще, макет/пользовательский интерфейс приложения не обновится. больше, но приложение отзывчиво. Если я воспроизвожу разные звуки в дополнение к тому, что кнопка меняет свой цвет, воспроизводятся разные звуки. Но цвет кнопки не меняется.
Если я использую смахивание в качестве блокировки экрана, все работает нормально и макет приложения обновляется.
Это только кажется например, интерфейс не восстанавливается после нажатия кнопки питания, если нет блокировки экрана или общего обновления пользовательского интерфейса.
Однако другие стандартные приложения на телефоне реагируют в той же ситуации, поэтому так и происходит. похоже, это не общая проблема Android/оборудования.
Подробнее здесь: https://stackoverflow.com/questions/790 ... refreshing