Android - 如何创建一个活动的多个实例?

问题描述:

我想知道是否可以在Android中创建单个Activity的多个实例?Android - 如何创建一个活动的多个实例?

我目前使用下面的代码开始了VoIP测试我自己的门店屏幕:


 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并将其放置在堆栈上。

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

这是可能,如果是的话,我在做什么错了?

+0

我没有做适当的研究,但鉴于你的描述,我是顾认为'CallDialogActivity'是'单顶'启动模式,在这种情况下,我认为你可以做的不多。如果没有明确指定,它会默认为你请求的行为... – 2010-07-01 12:22:09

+0

有没有办法检查它是否是单顶? – 2010-07-01 16:18:45

+0

@DonalRafferty你能解决这个问题..? – 2013-04-02 09:54:11

然而,当我把它的第二个它 刚刚返回到创建,而不是创建一个新的 活动,并把它的堆栈上的活动已经 。

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

另外:

  • 摆脱myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,因为你不希望基于你在这里
  • 由于context写了什么新的任务可能是一个Context,我不知道为什么你会通过所有的ContextWrapper/getBaseContext()东西
+0

对不起,将旧代码移到新项目中,谢谢指出上下文。当我删除myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);尝试启动Activity时出现以下错误:AndroidRuntimeException:从Activity上下文外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 所以我不确定,但我想我需要FLAG_ACTIVITY_NEW_TASK标志设置?此外,我的清单中的任何地方都没有launchMode设置。 – 2010-07-01 13:17:57

+0

@Donal Rafferty:你从哪里启动? – CommonsWare 2010-07-01 13:32:20

+0

来自同一申请中的服务。 – 2010-07-01 13:34:54

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
      | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 
      | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
+0

它正在为我工​​作 – 2014-12-01 13:42:35