如何通过快捷方式或其他热门活动恢复活动

时间:2013-07-20 03:21:20

标签: android

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

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

onResume检索此值

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

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

  1. 活动从未启动,按下主屏幕快捷键并显示A toast,Nice。
  2. 活动在后台,按下主屏幕快捷键并显示A toast,Nice。
  3. 活动正在使用中,另一项活动启动,当回来时,吐司出现,不太好。
  4. 活动在后台,没有额外的,按下了快捷键,没有任何内容。
  5. 在第三个例子中,它做了它想做的事情。但我怎么知道活动是否通过快捷方式恢复/启动?

2 个答案:

答案 0 :(得分:1)

你如何删除额外的EXTRA_ID?你应该这样做:

onResume()

if (getIntent().hasExtra(EXTRA_ID)) {
    ShowToast(getIntent().getExtras().getString(EXTRA_ID));
    getIntent().removeExtra(EXTRA_ID);
}

答案 1 :(得分:1)

你在启动程序中设置了一个额外的Intent,并希望在任何状态下打开此活动时获得额外的数据。

你遇到的问题:

  

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

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

要解决此问题,您需要两个步骤:

  1. 在清单中为此活动添加android:launchMode="singleTask"
  2. 将额外的数据处理代码放在onCreate()onNewIntent()中,而不是onResume()