我需要每 10 秒从 Android 中的服务器发送和获取一些内容。在这里,在 StackOverflow 和文档中,我确实找到了数十种实现它的方法(我尝试过的所有方法都可以完成工作),但似乎到处都有人说这种方式有问题。
我尝试使用循环AsyncTask
,直到它被取消(即直到 Activity 被终止),我发现这不是一个好的解决方案。在此之前,我尝试使用常规Threads
,然后我发现它会消耗大量电池。
现在我已经使用 Runnable
和 ScheduledExecutorService 的 scheduleAtFixedRate
函数完成了此操作,类似于此处建议的代码:
How to run an async task for every x mins in android? 。不用说,它确实有效。但是,如果我的 Activity 在后台(例如用户正在接听来电),它会起作用吗?
最后,我不知道在 Android 手机上最正确的做法是什么。
提前交易。
最佳答案
使用Handler
它有各种方法,例如postDelayed(Runnable r, long delayMillis),postAtTime(Runnable r, Object token, long uptimeMillis)
等。
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
//Start runnable here.
}
};
mHandler.sendMessageDelayed(msg, delayMillis)
关于java - 实现定期操作的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12159012/