簡體   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