意图额外数据未改变。

3

我有一个使用MediaPlayer的现有活动,在调用onStop()后仍在运行。

我想重新加载此活动,但传递不同的extra值。

            Intent intent = new Intent(WelcomeScreen.this, PlayMusic.class);
            intent.putExtra("plan", 0);
            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);

但是,无论我在新意图中输入什么内容,额外的内容都会“固定”为相同的值。

有任何想法吗?


2
你的问题对我来说不太清楚。“我有一个带有MediaPlayer的现有活动,在调用onStop()后仍在运行”。你没有在onStop()中释放MediaPlayer吗? - Raghunandan
不,我不想这样做。我的媒体正在播放。这就是为什么我使用FLAG_ACTIVITY_REORDER_TO_FRONT的原因。我不想重新创建活动,只想更改一些属性。 - Kobi Burnley
2个回答

2

正如您明确提到的那样,您创建了一个新的 Intent 对象。旧 Intent 附带的参数不会受到影响,该旧 Intent 是最初创建 Activity 时使用的。

但是,您可以通过重写 Activity 的 onNewIntent() 方法来访问新 Intent:

@Override
protected void onNewIntent(Intent intent) 
{
    super.onNewIntent(intent);

    if ( intent != null && intent.hasExtra("plan") )
    {
        // Yay! Do whatever... Live long... Prosper...
    }
}

1

您需要在onNewIntent回调中明确设置新的意图

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接