2011-08-21 31 views
2

我想創建一個服務,當它啓動時,初始化連接到谷歌電子表格,然後定期從數據庫發送數據到電子表格。在Android服務中運行兩個線程

是否可以創建兩個線程: 一個連接到Google電子表格,另一個檢查數據庫中的更改並更新電子表格。

我想從onCreate運行第一個線程(連接到谷歌電子表格),第二個從onStartCommand運行。這是不好的做法嗎?有沒有人對我如何做到這一點有任何反饋?

謝謝,請讓我知道,如果我說的任何事情都不清楚。

+0

第一個線程的目的是什麼?它會做什麼? – momo

+0

第一個線程建立與Google Spreadsheets的連接。約30-40秒。 第二個只是將數據添加到電子表格。 – gtdevel

回答

4

爲什麼你需要運行兩個線程?您的工作似乎是連續的:首先從數據庫獲取數據,然後將其發佈到電子表格。如果您在獲取數據庫數據時已通過Google文檔的身份驗證,則可能會保存一兩秒鐘,但如果需要在後臺服務中運行,它將不可見。而且由於看起來這隻需要不時運行,所以您應該使用AlarmManager來安排您的服務在一定的時間間隔內啓動,並在它完成工作後讓它自行關閉。考慮爲此使用IntentService,它將啓動後臺線程來執行工作並自動關閉。

+0

IntentService比服務有什麼好處? – gtdevel

+0

服務不會自動啓動工作線程,完成後它不會自動關閉(您需要調用'stopSelf()')。 IntentService使用一個隊列來處理它接收到的請求,並在後臺線程中一個接一個地運行它們,完成後關閉它。基本上它沒有你必須擔心的細節做正確的事情。 –

+0

謝謝尼古拉,我非常感謝你的幫助。 – gtdevel