【发布时间】:2015-08-26 07:31:15
【问题描述】:
我有一个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 也许是这样,但我该如何解决这个问题。我不想让它睡觉
标签: android postdelayed