2013-01-25 31 views
0

我正在製作應用程序。我目前有一個數據庫和一個方法,它使用服務器上的PHP腳本上傳圖片(以及與圖片相對應的數據,存儲在數據庫中)。目的和數據庫的模式都不重要。我之前沒有做過這樣的事情,但已經仔細研究了一下。基本上,用戶將與應用程序拍照。如果有網絡連接,圖片及其數據將會上傳,但如果沒有連接(duh)則不會。我想在連接存在時上傳掛起的圖像。Service + BroadcastReceiver:在後臺上傳文件?

要做到這一點......我目前的計劃是使用BroadcastReceiver來檢測用戶何時連接到網絡,然後使用服務上傳文件。這是正確的方法嗎?如果且僅當存在掛起的上傳時,我如何才能在連接存在時啓動服務?

回答

2

您的方法對我來說聽起來很合理。

你會註冊一個廣播接收器與你的包,聽着android.net.conn.CONNECTIVITY_CHANGE

如果這些活動還會觸發您的服務,那麼您可以單獨處理每個案件(僅限IntentService),因此您無需處理圍繞特定生活停止或啓動服務的許多問題週期。

希望這有助於;你聽起來不像一個初學者,所以你將能夠達到目的。

+0

@BackpackOnHead一般來說,是的。你需要你的IntentService是有狀態的;可能你需要一個並行的工作線程,就像我想的那樣。您可以嘗試收聽BOOT_COMPLETED廣播。 _但是,這將需要額外的權限,並且它將無法將您的應用程序移動到SD卡上,因爲SD卡是在_BOOT_COMPLETED之後掛載的。關於如何解決這個問題有很多討論。問題是,您希望如何用戶友好,以及在重新啓動後多快開始上傳。想要先搜索還是現在討論? –

+0

對不起,我刪除了這個問題,因爲它與原始問題並不完全相關,之後我很快找到了答案。不過謝謝。這是我的答案 - http://stackoverflow.com/questions/2784441/trying-to-start-a-service-on-boot-on-android – snotyak

+0

@BackpackOnHead沒問題。聽起來像你在正確的軌道上。 HF! –