【问题标题】:startActivity creating new instance of Activity every timestartActivity 每次创建新的 Activity 实例
【发布时间】:2011-12-07 05:07:48
【问题描述】:

我正在调用 startActivity 以使用外部类中的活动上下文将数据从一个活动传递到另一个活动。

这是我如何创建要发送的意图的一个示例:

public static Intent createSearchIntent(Context context, Class<?> cls) {
    Intent i = new Intent(ACTION_SEARCH, null, context, cls);
    return i;
}

这就是我开始活动的方式:

mContext.startActivity(mIntent); 

编辑: 对不起,我弄错了会发生什么。当我调用 startActivity 时,活动并没有被破坏,但是我发送意图的活动总是调用它的 onCreate 方法,所以我猜测正在创建一个新的活动实例,而不是返回到暂停/停止的实例。

我怎样才能改变它,以便我可以返回到暂停/停止的活动?

【问题讨论】:

  • 除非系统资源不足,否则它根本不应该结束您的活动。请编辑您的问题以包含您的代码。
  • 你怎么能说你的活动被破坏了?您在 logcat 中看到该活动的堆栈跟踪了吗?

标签: android android-activity


【解决方案1】:

这是你需要使用标志的时候。要使先前启动的活动回到堆栈顶部,您需要将i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 标志添加到您的意图中,然后以“i”作为意图名称来启动该活动-startActivity(i)
有关其他标志的列表,请查看 here

【讨论】:

    【解决方案2】:

    默认情况下,从 Activity A 调用 Activity B 不会破坏 Activity A 本身,您看到的是 Activity B 显示在 Activity A 之上,屏幕重叠。您可以按Back 按钮查看。

    这是 Activity 生命周期:http://developer.android.com/reference/android/app/Activity.html

    【讨论】:

    • 对不起,你是对的。我改变了我的问题以反映这一点。
    猜你喜欢
    • 2018-09-11
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多