2017-05-12 65 views
0

我在Android中測試了一個在React Native中開發的聊天應用程序,我注意到一個奇怪的行爲,僅取決於您如何將應用程序發送給背景。需要使用Home或Back物理按鈕將應用程序發送到後臺狀態時的不同行爲

兩個設備複製錯誤:Device1的與用戶1登錄和設備2與用戶2登錄

案例情況:

  1. 使用Home鍵從Active發送應用到後臺狀態。
  2. 使用Back物理按鈕將應用程序從活動狀態發送到後臺狀態。

一旦Device1中的應用程序處於後臺狀態,等待1-2分鐘,直到de WebSocket連接關閉。然後,從User2向User1發送聊天消息。在設備1中再次打開應用程序(將其狀態更改爲活動)

在情況1中,您將收到正確的消息,並且您會看到在聊天視圖以及對話內發送的消息。 在情況2中,消息的接收不一致。您可能會收到它,但它不會顯示在聊天視圖中,並且會話內部會顯示錯誤的順序和/或時間戳。

回答

0

回答你的問題聽起來很簡單,但在真正解決它需要額外處理的問題。

1)當用戶按下home按鈕應用程序在後臺時,活動仍然存在,並且操作系統會在需要資源時終止。

2)當用戶按下硬件後退按鈕時,操作系統殺死活動並釋放資源。

你可以用下面的方法解決你的問題。

您需要在服務中偵聽消息並將其存儲在本地存儲中,並且只有在可用時才更新UI。

1

這對應用程序的(活動)的生命週期是由於:

一)當您按下home鍵,的onStop()方法被調用,但沒有的onDestroy(),所以您的應用程序還活着,直到操作系統需要的資源和它會摧毀它,這就是爲什麼在這種情況下爲你工作。 b)當你按下返回按鈕時,onStop()方法是調用,但也是onDestroy(),所以你的應用程序被立即銷燬,這就是爲什麼在這種情況下你不適合你。

相關問題