从我的Android应用程序启动另一个应用程序会导致问题

时间:2012-12-15 07:22:56

标签: android android-intent

我有一个Android应用程序(我们将其称为“主应用程序”),它将启动另一个应用程序(我们将其称为“帮助应用程序”),具体取决于用户操作。请考虑以下情况。

  1. 用户A登录我的主应用程序
  2. 我的主应用程序启动Helper应用程序,其中包含特定于用户A的详细信息(在Intent中作为附加内容发送)
  3. 用户A最小化Helper应用程序
  4. 用户A从我的主应用程序注销
  5. 用户B登录我的主应用程序
  6. 我的主应用程序尝试启动Helper应用程序,其中包含特定于用户B的详细信息(在Intent中作为附加内容发送)。但它不是新创建的Helper应用程序。它只是将之前的Helper应用程序带到前台,其中包含旧的详细信息用户A.
  7. 我试图捕获onNewIntent()中的新意图,但它永远不会被触发(在清单中将活动声明为singleTop)。

    我的问题是如何使用新意图每次启动Helper应用程序。非常感谢。

2 个答案:

答案 0 :(得分:1)

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

像这样:

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

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

每当您使用新意图获得Helper应用程序时。

希望它对你有所帮助。

感谢。

答案 1 :(得分: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时,

并在Helper应用程序中

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