【问题标题】:Starting activity from a non-Activity class with FLAG_ACTIVITY_CLEAR_TOP从带有 FLAG_ACTIVITY_CLEAR_TOP 的非活动类开始活动
【发布时间】:2014-05-14 09:34:46
【问题描述】:

是否可以使用 FLAG_ACTIVITY_CLEAR_TOP 从非 Activity 类启动 Activity?

我有一个非 Activity 类,在某些条件下,它需要启动一个 Activity 的意图。我目前正在这样做:

Intent newIntent = new Intent(context, myActivity.class);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);

这可行,但我不希望将活动作为新任务启动。相反,我想使用 FLAG_ACTIVITY_CLEAR_TOP,但这给了我以下运行时 System.err:

从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

【问题讨论】:

  • 如果您在没有活动上下文的情况下启动任何活动,那么您必须使用 FLAG_ACTIVITY_NEW_TASK,因为您正在偏离活动连续性。希望您尝试使用服务或广播接收器上下文启动活动。
  • 谢谢。这是一个由接收者调用以处理事件的类。如果检测到应用程序由于某种原因已被注销,我正在尝试将应用程序带回登录活动,并且我不想创建新任务,否则以后手动注销将不起作用,但是而是将用户带到较早的实例。

标签: android android-intent android-activity start-activity


【解决方案1】:

您可以组合这些标志(即:使用Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP)。

但是,如果现有任务中没有myActivity 的活动(未完成)实例,它不会清除任何内容,它只会在堆栈顶部创建myActivity 的新实例.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多