У меня есть Runnable r
, который запускается периодически один раз в минуту на handler.postDelayed(60*1000)
. И я проверяю свой код на реальном устройстве.Почему зарядка состояния телефона влияет на поведение моего приложения
Однако я замечаю, что когда телефон заряжается (AC или USB), он работает хорошо, но если телефон отключен, Runnable r
будет работать только один раз каждые 20 минут или даже хуже, несколько часов. Спасибо за любую помощь!
Ниже приведен код:
private final Runnable listen_to_server = new Runnable(){
public void run(){
new Thread() {
public void run() {
try {
handler.sendMessage(handler.obtainMessage(PING_SERVER,"listen"));
synchronized (listen) {
listen.wait();
}
handler.postDelayed(listen_to_server, 50000);
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
};
В обработчике:
handler=new Handler() {
@Override
public void handleMessage(final Message msg) {
switch (msg.what) {
case PING_SERVER:
String type = (String) msg.obj;
add_log("ping server"); // print to screen and Log.d
...
...
}
}
}
разместить свой работоспособный код и как вы вызываете его –
вы можете разместить код пожалуйста? –
Ваш телефон, вероятно, переходит в глубокий спящий режим, чтобы сэкономить аккумулятор, если он не подключен через USB, и экран выключен. Таймеры AFAIK не будут обновляться вообще/не так часто во время глубокого сна. – Michael