我正在開發一個應用程序,通過wifi連接從外部設備收集數據。我使用一個線程來完成這項工作,並將數據存儲到數據庫中。應用程序或前臺服務的子類中的後臺線程?
將線程放入自定義應用程序類(作爲單例管理)是否是一個好主意?或者,如果我把它放在前臺服務裏面會更好嗎?
我正在開發一個應用程序,通過wifi連接從外部設備收集數據。我使用一個線程來完成這項工作,並將數據存儲到數據庫中。應用程序或前臺服務的子類中的後臺線程?
將線程放入自定義應用程序類(作爲單例管理)是否是一個好主意?或者,如果我把它放在前臺服務裏面會更好嗎?
您可以使用爲此類內容構建的AsyncTask。它不會阻止你的UI線程,並會在後臺完成你的網絡和存儲。
這裏有一個教程,如果你需要一個:
https://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/
使用IntentService。 IntentService使用單獨的後臺線程,所以它不會阻塞UI線程。即使您的所有活動都在後臺,它仍然存在。 AsyncTask的問題在於,如果Activity終止,它就會終止。使用IntentService,您的下載將愉快地運行,直到完成。
如果你真的知道 Android線程和你感覺舒服,那麼你可以做自己的線程。不過,我注意到使用IntentService要容易得多。唯一的缺點是IntentService線程不能被中斷,但我懷疑大多數開發人員需要該功能。
要從IntentService與應用程序中的其他組件通信,請使用LocalBroadcastReceiver。要向用戶界面「溝通」,請使用通知。
有趣的...我投你的迴應,但我不知道它的解決方案呢。不管怎麼說,還是要謝謝你。 –
你是什麼意思的前臺服務。 – jeet
使用服務。應用程序中的靜態線程非常相似,但是服務旨在用於此類任務。 – zapl
前臺服務:調用startForeground(0,notification);從服務 –