如何在 15 秒后从服务中启动处理程序以防止应用程序睡眠并将位置发送到 Web 服务?
Posted
技术标签:
【中文标题】如何在 15 秒后从服务中启动处理程序以防止应用程序睡眠并将位置发送到 Web 服务?【英文标题】:how to start a handler from service after 15 second to prevent app from sleep and send location to webservice? 【发布时间】:2019-03-13 03:47:26 【问题描述】:我正在开发 GPS 跟踪应用程序,我需要在 15 秒后跟踪位置。我已经使用处理程序从服务类的 onStartCommand() 启动服务。但 15 秒后或一段时间后,处理程序并不总是执行。我还使用 WakeLock 来防止应用程序休眠。如何解决这个问题?
【问题讨论】:
Using Handler inside service的可能重复 【参考方案1】:简而言之:
new Handler().postDelayed(() -> ... , 15000);
动作(此处为 lambda)将在超时(15,000 毫秒)后执行。
展开后可能是这样的:
new Handler().postDelayed(new Runnable()
@Override
public void run()
//Track my location
, 15_000);
【讨论】:
我已经这样做了,但它并不总是在 15 秒后执行 在什么平台上 - 这可能是打瞌睡模式吗? 在安卓平台【参考方案2】:如下所示,使用Timer
而不是Handler
new java.util.Timer().schedule(new java.util.TimerTask()
@Override
public void run()
//do your task here
, 15000);
【讨论】:
究竟为什么这是一个糟糕的建议:***.com/a/40339630/984830以上是关于如何在 15 秒后从服务中启动处理程序以防止应用程序睡眠并将位置发送到 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中 x 秒后从 UIButton 更改 UIImage
如果Java应用程序不在预定义的目录中,如何防止(以编程方式)启动它? [复制]