0

我正在尝试将一项活动带到最前面。我发现了许多与此类似的问题,但没有一个真正有效。

我总是在应用程序类的变量中保存对当前活动的引用。当应用程序在后台运行时(在 onPause 触发后),如果有任何消息到达,我需要将相同的活动带到前面并显示消息。我让它工作的唯一方法是..

Intent i = new Intent(mCurrentActivity, JoboffersActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

我遇到的问题是它重新创建了我想避免的活动。我在清单中都singleInstance试过了。singleTask如果我不添加FLAG_ACTIVITY_CLEAR_TOP,则在按下后退键时,它会将我带到同一活动的上一个实例。即使我添加sigleInstance它也会创建相同活动的两个实例。如果我不添加FLAG_ACTIVITY_NEW_TASK,那么它会显示错误 Calling startActivity()from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASKflag

4

1 回答 1

0

尝试在您的意图中添加另一个标志 FLAG_ACTIVITY_SINGLE_TOP。根据Android文档,这两个标志的组合:

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

将 Activity 的当前实例带到前面。 http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

于 2015-11-16T16:46:49.310 回答