我想实现一个长时间运行的后台计时器,它定期将用户的位置发送到服务器。
为此,我为UIBackgroundModes
设置location
模式,并在应用程序转到后台时调用beginBackgroundTaskWithExpirationHandler
。对于CLLocationManager
,我使用startUpdatingLocation
方法(不希望使用重大更改,因为我需要高精度的定位)。
但是大约在应用程序进入后台26分钟后,它会停止向服务器发送位置。但是应用程序没有崩溃,所以在我把应用程序带到前台后,它可以恢复计时器。
26分钟来自实验,iOS6.1,苹果5。
这里有一些问题,,
>
我不明白为什么它在26分钟后暂停,而不是10分钟,这就是所谓的后台任务的时间限制。
在16mins之前,背景时间剩余
方法返回双倍最大值。但是16分钟后,它从600
减少,所以它在10分钟后暂停后台任务。
我已经尝试在expiration处理程序内部调用带有ExpirationHandler的BeginBackgroundTask,但没有用。
如果有人对这个问题有线索,我们将不胜感激。
如果您成功设置了ui背景模式
,则移动时,应用程序可以在后台长时间运行。但是,如果您停止移动超过10分钟(可能更多),应用程序将被系统暂停。如果位置更新,您的应用程序将处于唤醒状态,但此唤醒时间将非常短,因此您必须使用ExpirationHandler调用BeginBackgroundTask方法来处理位置更新。
https://github.com/voyage11/Location
使用此代码。您可以设置要调用的时间间隔。我试过很多代码,但我发现这是最准确的,电池问题最少。这对于后台位置服务来说也是非常棒的。:)
问题内容: 我希望我的iOS应用程序在后台运行并且关闭时启动计时器。计时器必须每30分钟检查一次新的通知。在计时器函数中,它们每30分钟调用另一个函数showNotification()。 当应用未在后台运行/在后台运行时,我该如何执行此计时器以及必须在哪个位置调用计时器。 问题答案: 如果应用程序不在前台且具有100%的确定性,则无法执行任何操作。您可以使用后台获取来定期唤醒,但是您无法控制它何
我对Python和Django相当陌生,所以请让我知道是否有更好的方法来做到这一点。我想做的是拥有每个设备(从模型继承。Model)启动一个长时间运行的后台线程,该线程不断检查该设备的运行状况。然而,当我运行代码时,它似乎不像守护进程那样执行,因为服务器缓慢且不断超时。这个后台线程将(在大多数情况下)运行程序的生命周期。 下面是我代码的简化版本: 这似乎是线程的一个非常简单的用法,但每次我寻找解决
我正在开发一个示例应用程序,跟踪用户的位置在后台,但我不想离开位置服务始终启用,但我的计时器中的一些行为不正常。 我的想法是,每x分钟,服务就会继续,当它有一个正确的新位置时,它会再次发布,现在设置为10秒,只是为了测试。(明显的位置变化不起作用,不够准确) 我搜索了很多(iOS开发中心StackOverflow),发现了“新的”后台位置功能,它允许您在进入后台后10分钟内运行代码,使用的是启动后
我有一个在Tomcat7上运行的Spring3.0WebMVC应用程序。在应用程序启动时,我启动一个后台线程来加载内存缓存,其中包含来自数据库的记录。该线程从数据库加载所有数据通常需要一个多小时。在同一个应用程序中,我有一个@Controller注释类,它公开了一个REST接口,客户端可以通过该接口从加载的缓存中获取对象。 我们的要求之一是,在数据加载完成之前发出的任何REST请求都将立即向客户端
问题内容: 我有一个运行长时间运行的作业的Web服务(大约几个小时)。我正在使用Flask,Gunicorn和nginx进行开发。 我正在考虑做的事情是拥有一条需要很长时间才能完成的路由,调用一个创建线程的函数。然后,该函数将向路径返回一个GUID,并且路径将返回一个URL(使用GUID),用户可以使用该URL来检查进度。我正在将线程设为守护程序(thread.daemon = True),以便如
我有一个压缩图像的任务,它在图像中使用了许多循环: 我在普通线程中运行此方法,如下所示: 或者在后台工作线程中运行 问题是:这种方法有时会出错,在接收无效输入时会导致无限循环。在这种情况下,它将永远运行,并损害CPU,即使当设备的屏幕关闭时,这会增加设备的温度(如果我使用工作线程,它还会阻止等待队列中的其他任务)。 我想我需要设置一个超时来终止长时间运行的任务。在正常Java线程中实现这一点的最佳