簡體   English   中英

將數據從后台服務發送到當前處於后台的活動

[英]Sending data from background service to activity which is current in background

考慮當用戶打開應用程序並直接進行活動A時的場景。 OnCreate方法創建在后台運行的服務。

this.StartService(new Intent(this, typeof(MyService)));

該服務獨立於活動運行,因此,如果用戶關閉或銷毀應用程序,該服務仍在運行。

活動A中,我通過RegisterReceiver注冊了幾個接收器,因此,當我的后台服務發生問題時,我會通過發送廣播來更新活動A。

我面臨的問題是用戶從活動A轉到活動B。 這時服務正在發送廣播,需要在活動A上進行某些更改,但是由於它不在前台,因此我不會通過接收方進行更新。 因此,當用戶從活動A返回活動B時 ,用戶會看到舊數據。 服務會不定期地進行這些更新。

更新在后台然后轉到前台的活動的正確方法是什么? 在活動中獲取服務引用或數據的合適方法是什么?

據我了解,如果我使用綁定服務,則當應用被殺死時,它將被銷毀。 我不想要那個。 所有教程僅顯示如何更新前台活動。

我只是了解android,所以也許我錯過了一些明顯的小細節。

  1. 您可以將數據持久保存在數據庫或文件中
  2. 您可以重新啟動服務以獲取更新的數據

您可以使用Context#sendStickyBroadcast 已棄用,但仍可以使用。 當您的活動進入前台時,將進行此類廣播。 獲取它后,不要忘記Context#removeStickyBroadcast

暫無
暫無

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

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