【问题标题】:Android - How to create Multiple instances of an Activity?Android - 如何创建一个活动的多个实例?
【发布时间】:2013-05-16 10:16:23
【问题描述】:

我想知道是否可以在 Android 中创建单个 Activity 的多个实例?

我目前使用以下代码为 Voip 测试启动自己的 inCall 屏幕:


     public void initInCallScreen(String pName, String phoneNumber, int contactID, boolean 
        callDirection, int lineID){

    //starts in callScreen dialog
    final Intent myIntent = new Intent(context, CallDialogActivity.class);
    myIntent.putExtra("NAME", pName);
    myIntent.putExtra("NUMBER", phoneNumber);
    myIntent.putExtra("ID", contactID);
    myIntent.putExtra("CALLTYPE", callDirection); //True = Incoming, False = Outgoing
    myIntent.putExtra("LINEID", lineID);
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(myIntent);

这让我可以正常启动 Activity。

但是,当我调用它一秒钟时,它只是返回到已经创建的 Activity,而不是创建一个新的 Activity 并将其放入堆栈。

我希望能够多次创建活动,以便我在堆栈上有两个或三个活动,并且用户可以使用主页、后退按钮等在它们之间切换...

这可能吗?如果可以,我做错了什么?

【问题讨论】:

  • 我没有做适当的研究,但根据你的描述,我猜CallDialogActivity 属于single top 启动模式,在这种情况下,我认为你可以做的不多做。如果没有明确指定,它将默认为您请求的行为...
  • 有没有办法检查是不是单顶?
  • @DonalRafferty 你能解决这个问题吗..?

标签: android android-activity multiple-instances


【解决方案1】:

但是,当我调用它时,它 刚刚返回活动 创造而不是创造一个新的 Activity 并将其放入堆栈。

您可能更改了清单以添加干扰您的目标的android:launchMode 属性。默认情况下,启动一个活动会启动一个新实例。

还有:

  • 摆脱myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,因为您不希望根据您在此处编写的内容执行新任务
  • 既然context 可能是Context,我不知道你为什么要经历所有ContextWrapper / getBaseContext() 的东西

【讨论】:

  • 抱歉,将旧代码移动到新项目中,感谢您指出上下文。当我删除 myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);尝试启动 Activity 时出现以下错误:AndroidRuntimeException:从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?所以我不确定,但我认为我需要设置 FLAG_ACTIVITY_NEW_TASK 标志?此外,我的清单中的任何地方都没有 launchMode 设置。
  • @Donal Rafferty:你从哪里发布这个?
  • 来自同一应用程序中的服务。
  • @Donal Rafferty:嗯...我从来没有从服务开始活动,所以我不知道规则有何不同。对不起!
【解决方案2】:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
            | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多