2017-05-12 2 views
0

リアクションネイティブで開発されたチャットアプリをAndroidでテストしていますが、アプリをどのように送信するかによってのみバックグラウンド。ホームやバックの物理ボタンを使用してアプリをバックグラウンド状態にするときの動作が異なります

2つのデバイスは、バグを再現するために必要とされる:ユーザー1とデバイス1がログインユーザー2とにし、デバイス2ログイン

ケース状況:

  1. ホームボタンを使用してActiveからバックグラウンド状態にアプリケーションを送信します。
  2. [戻る]物理ボタンを使用して、アプリケーションをアクティブ状態からバックグラウンド状態に送信します。

Device1のアプリケーションがバックグラウンドステートになったら、WebSocket接続が閉じられるまで1〜2分間待ちます。次に、User2からUser1にチャットメッセージを送信します。デバイス1で再びアプリケーションを開く(状態をアクティブに変更)

ケース1の場合、メッセージが正しく受信され、チャットビューと会話内で送信されたメッセージが表示されます。 ケース2では、メッセージの受信に一貫性がありません。あなたはそれを受け取るかもしれませんが、チャットビューには表示されず、会話の中で間違った順序やタイムスタンプで表示されます。

答えて

0

あなたの質問への回答は非常に簡単ですが、問題を解決するために余分な処理が必要です。

1)ユーザーがホームボタンを押したときにアプリがバックグラウンドで実行されると、アクティビティが有効になり、リソースが必要なときはいつでもOSによって強制終了されます。

2)ユーザーがハードウェアの戻るボタンを押すと、OSはアクティビティを解放し、リソースを解放します。

以下の方法で問題を解決できます。

サービスでメッセージを聞き取り、ローカルストレージに保存し、利用可能な場合のみUIを更新する必要があります。アプリケーションの(活動)のライフサイクルに起因するのです

1

あなたはホームボタンを押すと、onStop()メソッドが呼び出されますが、OSが資源とそれを必要とするまで、onDestroy()は、そのアプリケーションがまだ生きているではないA)それを破壊し、この理由でこれがあなたのために働いている理由です。

b)戻るボタンを押すと、onStop()メソッドはcallでもonDestroy()でもあるので、アプリケーションがすぐに破棄されるため、この場合はあなたのために機能しません。

関連する問題