簡體   English   中英

UI更新,而無需使用android服務中的Broadcast Receiver或Handler

[英]UI update without using Broadcast Receiver or Handler from Service in android

我知道服務正在主線程上運行,所以我們為什么要使用廣播接收器或處理程序來更新android中的UI。 我們可以直接更新UI而不使用android服務中的處理程序或廣播接收器嗎? 我很困惑,所以請澄清一下這個討論。

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

詳細信息:在您的問題中,您所引用的服務和處理程序可以在另一個線程中啟動。 ->處理程序用於進程間通信,當在UI線程外部運行的服務應與UI線程通信時。 ->服務是為長流程案例設計的。

在您的問題中,您指的是廣播接收器,它可以從服務內部或活動中啟動。 ->如果要使用某些系統(和其他自定義)事件更新UI,則始終需要廣播接收器。 ->如果僅捕獲事件並更新字段,這將是一個漫長的過程。 但是,如果要捕獲和讀取數據庫,或者訪問Web服務(非常異步操作),則需要花費很長時間。

要更新UI,您需要引用該視圖。 您無法獲得對服務中視圖的引用。 但是您可以執行“活動”。 這就是為什么必須在服務中強制執行A​​ctivity以更新UI之前(因為服務本身沒有UI)。

您可以將對UI的引用傳遞到服務中,但是由於Activity的存在,可能會導致內存泄漏,並且服務的生命周期可能會有所不同,並且最終可能會出現死鎖,在此死鎖中您的服務會鎖定Activity而不被GC,並且活動會鎖定服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM