簡體   English   中英

1小時后活動被破壞

[英]Activity destroyed after 1 hour

我是Android開發的新手。 我已經開發了一個Android應用程序,即使在1小時后也需要存儲連接/數據。 目前,我在單例課程中擁有所有數據和連接(chromecast mediaplayer)。 但是,當用戶將應用置於后台約一個小時時,活動被破壞,因此連接,數據等丟失,導致我的應用在重新啟動時崩潰。

我已經閱讀了android服務,是否可以使用這些服務來容納單例,所以即使活動被破壞,重新啟動時我也可以將數據綁定回視圖?

還是有一種方法可以確保當android決定進行清理時不會破壞活動? 請指教

謝謝。

我認為您可能會誤解什么是Android應用程序。

您的應用程序是一堆在單個Linux進程中運行的組件。 在該過程中,組件來來去去。 您絕對無法控制流程本身的生命周期。

您的問題部分的答案是:是的,服務將在無形活動被銷毀后仍然存在。

當一個活動變得不可見時,它會被銷毀。 如果您的進程沒有執行其他任何操作,那么該進程也有可能被終止。

如果您的進程也正在運行服務,則將其殺死的可能性較小。 不過,可能性很小。 該過程最終被殺死。 如果這樣做,您的單身人士將不復存在。 您無法采取任何措施來防止這種情況。 因此,問題第二部分的答案為“否”。 重新啟動該過程時,您不能依賴服務中的單例

您可能會考慮使用Application對象。 它的生命周期與過程的生命周期大致相同。 它不會永遠存在,但是只要您的應用程序的任何其他組件都存在(ContentProviders除外),它就會存在。

聽起來好像要在后台運行應用程序時保持與chromecast設備的連接。 顯然,服務可能會有所幫助,但我有一些建議可能會很方便:

  • 服務可以被系統殺死,但是根據您的設置方式(例如onStartCommand()的返回值),它們可以由系統重新啟動。 發生這種情況時,您不能指望您的動態數據仍然在那里(例如您的單例)。 您需要包括重新創建所需邏輯的邏輯(例如,重建單例)

  • 手機擱置一會兒可以進入睡眠狀態(或用戶可以鎖定手機),因此,根據手機設置和手機的構造,當手機進入睡眠狀態后,wifi可能會在一段時間后掉線; 有些會更積極地執行此操作,有些則不會(即使您持有鎖,它仍然可能發生)。 關鍵是您必須假設它可能會發生。 即使您有服務,由於wifi丟失,您的Cast連接也會中斷,因此處理問題的正確方法不是試圖一直保持連接狀態(因為您無法這樣做),而是要有邏輯在適當的情況下重新建立連接。 為了做到這一點,您需要保留足夠的信息,以便能夠將事物恢復到原來的狀態。 您的邏輯還應該足夠聰明,如果不能,則不要重新連接。

Android OS可以破壞任何活動,如果資源不足,它就會破壞任何活動以為其他應用程序騰出更多空間。 但是您可以使用后台服務來保持單身

您可以使用此鏈接創建后台服務

暫無
暫無

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

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