0

使用廣播接收器或處理程序從服務我知道服務是在主線程上運行,所以爲什麼我們使用的廣播接收器或處理程序更新的Android UI。我們可以直接更新UI,而無需在android中使用處理程序或廣播接收器。我很困惑,請澄清一下這個討論。UI更新而不在android系統

回答

0

更新UI,你需要有對視圖的參考。您無法獲得對服務中視圖的引用。但是你可以做到這一點。這就是爲什麼你必須在服務中執行Activity來更新UI之前(因爲服務本身沒有UI)。

您可以將對用戶界面的引用傳遞到服務中,但由於活動和服務生命週期可能會不同,並且可能導致內存泄漏,並且最終可能會導致服務鎖定活動的死鎖被GCed,並且活動鎖定服務。

+0

regullar services是什麼意思?任何服務的例子都在主線程上運行? –

+0

@chetanmekha,任何不是特別的服務。任何示例,從「服務」擴展。 –

2

答:創建活動,註冊您的廣播接收器等瞧!

詳情: 在你一個問題,你是指服務和處理程序,它可以在另一個線程啓動。 - >處理程序用於進程間通信,當在UI線程之外運行的服務應該與UI線程交談時。 - >服務是爲長期處理案例而設計的。

在你一個問題,你是指廣播接收機,它可以從服務中啓動,或從活動。 - >如果您想用某些系統(和其他自定義)事件更新UI,您將始終需要廣播接收器。 - >如果它只是捕獲事件並更新一個字段,這不是一個漫長的過程。但是,如果是關於捕獲和讀取數據庫,或訪問Web服務(非常異步操作),這是一個漫長的過程。