0

我有一个 Android 应用程序(让我们将其称为“主应用程序”),它将根据用户操作启动另一个应用程序(让我们将其称为“帮助应用程序”)。考虑以下场景。

  1. 用户 A 登录到我的主应用程序
  2. 我的主应用程序启动 Helper 应用程序,其中包含特定于用户 A 的详细信息(在 Intent 中作为附加内容发送)
  3. 用户 A 最小化 Helper 应用程序
  4. 用户 A 从我的主应用程序中注销
  5. 用户 B 登录到我的主应用程序
  6. 我的主应用程序尝试使用特定于用户 B 的详细信息启动 Helper 应用程序(在 Intent 中作为 extras 发送)。但它不是新创建的 Helper 应用程序。它只是将以前的 Helper 应用程序带到前台,其中包含旧用户 A 的详细信息。

我试图在 onNewIntent() 中捕捉新意图,但它从未被触发(在清单中将活动声明为 singleTop)。

我的问题是如何每次以新的意图启动 Helper 应用程序。感谢任何帮助。

4

2 回答 2

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();

并且在每次应用程序恢复时在 Helper 应用程序中读取所有最新详细信息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 回答
1

您需要从 Helper 应用程序中覆盖 onPause() 方法。

像这样 :

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

因此,每当您的帮助应用程序进入后台时,它将由这段代码完成。

每次您都会获得具有新意图的 Helper 应用程序。

希望它可以帮助你。

谢谢。

于 2012-12-15T07:30:24.623 回答