2017-05-15 10 views
0

私は、特定の他の機能をコメントしたり、返信したり、表示することができる特定の画面を持っています。ナビゲーション・ドロワーであっても、ユーザーがアプリケーションにログインすると、それ自体が更新されるように設計されています。Android:ユーザーのログインとセッションが維持された後の全体のアクティビティの状態をリフレッシュする方法

私の問題は、ユーザーのログインとセッションが彼/彼女のために作成されると、アクティビティスタック全体をリフレッシュする方法についてはわかりません。

一部の画面にはコメント編集ボックスが表示されます。これらのボックスはユーザーがログインしている場合にのみ表示されます。ユーザーが任意の画面からログインしようとすると、引き出しも自動的に更新されます。

は、私はいくつかのリスナーを作成し、スタック内の各活動にリフレッシュを呼び出すか、すべてのバックスタックを殺すために、それらの後に新しいメインの活動とに直接ユーザーを再する必要がありますか。

私が使用しなければならない良いアプローチを教えてください。

finish(); 
startActivity(getIntent()); 
+0

A - > B - > C - >いくつかのケースAにログイン - > D - > F - >他のケースAにログイン - > E - > G - >のログイン が今クリアすべてのバックスタック午前新しいAユーザーを移動する ログイン後のユーザーC/F/Gに戻ってセッションを使用するすべてのアクティビティをリフレッシュして画面を作成します。アクティビティBがユーザープロファイルを表示することをより明確に想定しますpicログイン後、セッションの詳細を使用するすべてのスタックアクティビティをリフレッシュし、ログイン後にリフレッシュしたい場合は、すべてのバックスタックを削除して新しいAに移動します。 最適なアプローチは何ですか? – Peter

答えて

0

試行し、ユーザーがログインがBroadcastReceiver https://developer.android.com/reference/android/content/BroadcastReceiver.html

しかし興味を持っている断片\活動に、このイベントをリッスンするとき私は、独自のカスタムアクションで意図を放送します

ログインインテントをブロードキャストする場合:アクティビティの再開時にUI要素を更新する必要があります。 ログイン時にすべてのアクティビティを強制終了できますが、ユーザーエクスペリエンスが悪いようです。

+0

トップに私のコメントを見てください私は追加しました、画像がより明確になることがあります – Peter

1

を使用する

+0

トップに私のコメントを参照してください私は追加して、画像がより明確になるかもしれないかもしれないと思います – Peter

+0

私はバックスタックを変更すると、あなたの意図を正しく読んでいるなら、非常に混乱しているユーザーエクスペリエンスにつながります。私は活力に戻ることにこだわります –

+0

ええ、今は同じことをやっています!彼らの情報があれば、いつでもあなたに提案することができます。 ありがとうございました。 – Peter

0

正常にログインした後にアクティビティを再起動することができます。また、ユーザーのログインに別のアクティビティーを別々に使用している場合は、リダイレクト先の特定のアクティビティーを起動できます。そして、その活動は再初期化されます。

ユーザーデータの永続性要因、またはその特定の瞬間における他のユーザー状態が心配な場合は、saveInstanceStateを使用して、アクティビティを再初期化した後に同期させることができます。しかし、今回は、アクティビティに、プロファイルpic、名前、性別などのログインしているユーザーの情報の一部が含まれます(可能性があります)。

  • オプションの現在の活動をリフレッシュするための1

、あなたはあなたがあなたの現在を保存することができ、コードsnippet-

public void refreshActivity (View v){ 
    Intent intent = getIntent(); 
    finish(); 
    startActivity(intent); 
} 
  • オプション2

の下にこれを使用することができます活動状態 -

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putBoolean("MyBoolean", true); 
    savedInstanceState.putDouble("myDouble", 1.9); 
    savedInstanceState.putInt("MyInt", 1); 
    savedInstanceState.putString("MyString", "Welcome back to Android"); 
    // etc. 
} 

したがって、アクティビティに関連するキーと値のペアとして情報を入力することで、インスタンスの状態を保存できます。その後、同じ保存データから元に戻します。

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); 
    double myDouble = savedInstanceState.getDouble("myDouble"); 
    int myInt = savedInstanceState.getInt("MyInt"); 
    String myString = savedInstanceState.getString("MyString"); 
} 

私はあなたの参照のためのオリジナルの答えの linkを入れています。これがあなたの問題を解決することを願っています。

+0

トップに私のコメントを見てください私が追加した、画像がより明確になるかもしれません – Peter

+0

私はあなたの要件を理解しました。現在のアクティビティの状態をリフレッシュするだけでなく、メインアクティビティ(A)に戻る代わりに、アクティビティコールスタック内のすべてのアクティビティの状態を更新する必要があります。 まあ、私はこれに対する正確な解決策を知らない。しかし、現在のアクティビティーを更新して、** back **ボタンを押した後、**メインアクティビティー**に戻り、リフレッシュされるようにする方法があります。 詳細については、この[リンク](http://www.tutorialspot.com/android/android_session_management.htm)を参照してください。 – Sudip

+0

Okey、私はすでにセッションコンセプトを使っています。 努力をいただきありがとうございます!いくつかのより良い動きを理解する必要があります!高尚な男 – Peter

関連する問題