繁体   English   中英

Android服务,每x分钟上传x分钟数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM