android返回活动时会被销毁并且不会恢复

llo*_*kes 5 android android-actionbar

我正在构建一个Android应用程序,其中包含两个使用Action Bar的活动(https://github.com/johannilsson/android-actionbar,因为我的目标是Android 2.2).

它有许多活动.有一个名为Feed的"Home"活动和另一个名为"Settings"的活动.

我遇到的问题是使用我正在使用的操作栏的示例中给出的createIntent函数,当用户点击主页按钮返回Feed活动时,Activity仍会被销毁而不是恢复.

通过一些调试我发现它被破坏了,而不是当Activity首次暂停和停止时,但是当它恢复请求时.

public static Intent createIntent(Context context) 
{        
    Intent i = new Intent(context, Feed.class);        
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
    return i;    
}
Run Code Online (Sandbox Code Playgroud)

这是一个主要的烦恼,并且大大减慢了应用程序的速度,因为它必须重新加载其数据(缓存,但它不是即时重新加载数据).

那我怎么能避免这种行为呢?为什么会发生这种情况,因为我相信额外的旗帜应该会阻止这种行为.

Rab*_*oss 4

您想使用:

FLAG_ACTIVITY_REORDER_TO_FRONT
Run Code Online (Sandbox Code Playgroud)

引用 Android文档

如果在传递给 Context.startActivity() 的 Intent 中进行设置,则此标志将导致启动的活动(如果已在运行)被带到其任务历史堆栈的前面。

例如,考虑一个由四个活动组成的任务:A、B、C、D。如果 D 使用解析为活动 B 的组件的 Intent 调用 startActivity(),则 B 将被带到历史堆栈的前面,结果顺序为:A、C、D、B。如果还指定了 FLAG_ACTIVITY_CLEAR_TOP,则该标志将被忽略。

public static Intent createIntent(Context context) 
{        
    Intent i = new Intent(context, Feed.class);        
    i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);        
    return i;    
}
Run Code Online (Sandbox Code Playgroud)