Service中是否可以執行耗時操作

不可以。

 

Service和activity是運行在當前app所在的main thread(UI主線程)中的,而耗時操作(如:網絡請求、拷貝數據、大文件)會阻塞主線程,給用戶不好的體驗。


Broadcase耗時操作爲10秒,Activity耗時操作爲5秒
Service耗時操作爲20秒



如果需要在服務中進行耗時操作,可以選擇IntentService,  IntentService是Service的子類,用來處理異步請求。

IntentService在onCreate()方法中通過HandlerThread單獨開啓一個線程來處理Intent請求對象所對應的任務,這樣可以避免事務處理阻塞主線程。
onHandleIntent()函數針對Intent的不同進行不同的事務處理就可以,執行完一個Intent請求對象所對應的工作之後,如果沒有新的Intent請求達到,則自動停止Service; 否則ServiceHandler會取得下一個Intent請求
傳入該函數來處理其所對應的任務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章