0

ユーザーの操作に応じて別のアプリケーション (「ヘルパー アプリケーション」と呼びます) を起動する Android アプリケーション (「メイン アプリケーション」と呼びます) があります。次のシナリオを検討してください。

  1. ユーザー A がメイン アプリケーションにログインする
  2. 私のメイン アプリケーションは、ユーザー A に固有の詳細を含むヘルパー アプリケーションを起動します (インテントでエクストラとして送信されます)。
  3. ユーザー A がヘルパー アプリケーションを最小化する
  4. ユーザー A がメイン アプリケーションからログアウトする
  5. ユーザー B がメイン アプリケーションにログインする
  6. 私のメイン アプリケーションは、ユーザー B に固有の詳細 (インテントでエクストラとして送信される) を使用してヘルパー アプリケーションを起動しようとします。

onNewIntent() で新しいインテントをキャッチしようとしましたが、起動されませんでした (マニフェストでアクティビティを singleTop として宣言しました)。

私の質問は、新しいインテントで毎回ヘルパー アプリケーションを起動する方法です。

4

2 に答える 2

1

ヘルパー アプリケーションから onPause() メソッドをオーバーライドする必要があります。

このような :

    protected void onPause() {
            super.onPause();
           // Toast.makeText(getApplicationContext(), "Paused", Toast.LENGTH_LONG).show();
          finish();
    }

したがって、ヘルパー アプリケーションがバックグラウンドに移行するたびに、このコードによって終了されます。

そして、ヘルパー アプリケーションを新しいインテントで取得するたびに。

お役に立てば幸いです。

ありがとう。

于 2012-12-15T07:30:24.623 に答える
1

次のように SharedPreferences を使用して現在の問題を解決できます。

ユーザー B がメイン アプリケーションにログインすると、SharedPreferencesが作成されます。

 SharedPreferences mainPrefs = 
             this.getSharedPreferences("mainappliction", MODE_WORLD_READABLE);
 SharedPreferences.Editor prefsEditor = mainPrefs.edit();
 prefsEditor.putString("user_detailone", "userdetailone");
 prefsEditor.putString("user_detailtwo", "userdetailtwo");
 prefsEditor.commit();

アプリケーションが再開するたびにヘルパーアプリケーションで最新の詳細をすべて読み取りSharedPreferences、ユーザーの最新の詳細に従ってUIを更新します

@Override
public void onResume()
{
   SharedPreferences mainPrefs =
         this.getSharedPreferences("mainappliction", MODE_WORLD_READABLE);
   String struserdetailone = mainPrefs.getString("user_detailone", "nothing");
   //......

  //update your Helper application UI here according user details
    super.onResume();
}
于 2012-12-15T07:31:26.053 に答える