【问题标题】:Launcher + singleTask activity in AndroidAndroid 中的 Launcher + singleTask 活动
【发布时间】:2012-02-15 09:30:27
【问题描述】:

我在项目中启动活动时遇到问题。

我的“家庭”活动 (H) 允许在其中选择一些服务。假设 S11->...-> S1n 是服务 (S1) 的活动流。 H 是我的应用的 LAUNCHER 活动。

另外,我需要从 H 切换到另一个应用程序并返回到它。由于我无法更改该应用程序的行为,因此我必须将我的 H 活动声明为“singleTask”,以防止在我的活动堆栈中出现它的多个实例。

问题是我的应用程序无法在不删除 H 之后推送的活动的情况下重新启动。例如,如果我有 H-S11-S12,然后按 HOME 并从最近的应用程序菜单重新启动,我会得到 H 作为前台活动。

有什么想法吗?有没有办法让这种组合发挥作用?谢谢!

【问题讨论】:

  • 你能不能用更好的例子来解释一下,你是什么意思需要从H切换到另一个应用程序并返回它,以及活动S11....?
  • 所以问题是当您从最近的应用列表中重新打开应用时,堆栈中的其他活动应该保留在堆栈中,对吧?
  • 如何启动“另一个应用程序”?我看不出它是如何导致您的 H 活动的多个实例的。

标签: android activity-lifecycle


【解决方案1】:

您不需要 singleTask。使用startActivityForResult 而不是startActivity。 或者使用Fragments 而不是Activities

startActivityForResult(new Intent(H.this,S11),1);

public onActivityResult(int requestCode ){
    if(requestCode == 1){
       startActivityForResult(new Intent(H.this,S12),2);
    }else if(requestCode == 2){
       startActivityForResult(new Intent(H.this,S12),3);
    }
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多