0

主要活动创建了一个到主屏幕的快捷方式,一切顺利,但是当它通过快捷方式启动时需要知道一个额外的值。所以我在创建快捷方式时使用了这个

intent.putExtra(EXTRA_ID, "Some string info here");

onResume像这样检索值

if (getIntent().hasExtra(EXTRA_ID))
    ShowToast(getIntent().getExtras().getString(EXTRA_ID));

一切正常,让我们举一些例子

  1. 活动从未启动,按下主屏幕快捷方式并出现吐司,很好。
  2. 活动在后台,按下主屏幕快捷方式并出现吐司,很好。
  3. 活动正在使用中,另一个活动已启动,返回时出现吐司,不好。
  4. 活动在后台,没有额外的,按下快捷方式,什么都没有出现。

在第三个例子中,它做了它应该做的事情。但是我怎么知道活动是否通过快捷方式恢复/启动?

4

2 回答 2

1

你如何删除多余的EXTRA_ID?你应该这样做:

onResume()

if (getIntent().hasExtra(EXTRA_ID)) {
    ShowToast(getIntent().getExtras().getString(EXTRA_ID));
    getIntent().removeExtra(EXTRA_ID);
}
于 2013-07-20T03:48:55.280 回答
1

您在启动器 Intent 中设置了额外内容,并希望在此活动以任何状态打开时获得额外内容。

你遇到的问题:

活动在后台,没有额外的,按下快捷方式,什么都没有出现。

这是因为您的活动已经启动,启动器意图只是将现有任务用作前端任务,并且在这种情况下会丢失其额外数据。

要解决这个问题,您需要 2 个步骤:

  1. 在清单中添加android:launchMode="singleTask"到此活动。
  2. 将额外的数据处理代码放在onCreate()andonNewIntent()中,而不是onResume().
于 2013-07-20T04:01:44.417 回答