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

时间:2010-07-01 12:12:35

标签: android android-activity multiple-instances

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

我目前使用以下代码启动自己的inCall屏幕进行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并将其放在堆栈上。

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

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

2 个答案:

答案 0 :(得分:7)

  

然而,当我打电话给它一秒钟时   只是返回活动   创造而不是创造新的   活动并将其放在堆栈上。

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

此外:

  • 摆脱myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,因为你不想根据你在这里写的内容完成新任务
  • 由于context可能是Context,我不知道为什么要查看所有ContextWrapper / getBaseContext()内容

答案 1 :(得分:3)

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