[英]Android Service for uploading data for x minute in every x minute
我有2个服务在后台运行。 一个将不断收集位置数据,另一个将数据发送到服务器,警报管理器将每10分钟启动一次。
在将数据发送到服务器的服务中,我有一个方法将在onStartCommand()
发布数据(数据库中的50行onStartCommand()
。 我想让服务连续执行post data方法长达5分钟。
我尝试使用while循环连续执行该方法,但是它将显示消息应用程序未响应。 我认为while循环正在Main线程中的服务不间断地执行该方法,从而导致活动崩溃。
有什么更好的方法可以在服务中连续执行方法,同时使主线程上的活动崩溃?
我有2个服务在后台运行。 一个将不断收集位置数据,另一个将数据发送到服务器,警报管理器将每10分钟启动一次。
这对于电池寿命将是可怕的,因为您将需要通过WakeLock
保持CPU持续通电以“不断地收集位置数据”。
在将数据发送到服务器的服务中,我有一个方法将在onStartCommand()中发布数据(数据库中的50行)。 我想让服务连续执行post data方法长达5分钟。
这对于电池寿命会变得更糟,因为现在您将使WiFi或移动无线电保持高功率状态持续长达5分钟。
有什么更好的方法可以在服务中连续执行方法,同时使主线程上的活动崩溃?
分叉一个后台线程。
您需要在另一个线程上进行工作。
该服务有助于在UI外部控制生命周期,但是它仍位于MainThread上。
之所以称为“后台服务”,是因为它具有与您的活动生命周期不同的后台生命周期。
最简单的示例是从后台Service
生成ASyncTask
或更好地使用IntentService
。 IntentService
将自动控制您对线程的使用。
这是Intent Service线程工作的正式文档:
http://developer.android.com/training/run-background-service/send-request.html
以下是我讨论过的内容的API文档: http: //developer.android.com/reference/android/os/AsyncTask.html http://developer.android.com/reference/android/app/IntentService.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.