Android 在唯一内存中启动新活动?

Android 在唯一内存中启动新活动?,android,android-activity,Android,Android Activity,我有一个活动A和一个活动B。A是根活动,它启动活动B 这两个活动都实例化了一个单例类C。我希望它们有自己唯一的类C,但活动B总是以活动a中的C结束 <activity android:name="com.scrollMotion.bundleRunner.A" android:label="@string/title_activity_bundle" > <intent-filter> <

我有一个活动A和一个活动B。A是根活动,它启动活动B

这两个活动都实例化了一个单例类C。我希望它们有自己唯一的类C,但活动B总是以活动a中的C结束

    <activity
        android:name="com.scrollMotion.bundleRunner.A"
        android:label="@string/title_activity_bundle" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.scrollMotion.B"
        android:label="ShelfBundleActivity"
        android:allowTaskReparenting="true"
        android:taskAffinity="com.scrollMotion.ShelfBundleActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
我试图将这两个活动分别保存在不同的内存和堆栈中

提前感谢您的帮助


杰瑞不要让C班成为单身汉。这就是单身汉的字面意思,他们是可怕的东西,这就是为什么他们不应该被任何人雇佣的原因。

好吧,我根本不是专家,但也有一种模式叫做。您可以将该singleton类更改为multiton,为了选择要查找的正确实例,请将活动引用(或所有活动共享的任何内容)传递给实例函数。此外,如果有类似的全局可用功能,您可以在实例中检查该函数并返回相应的实例,而无需更改API。

使用Singlton不是最佳编程实践,但有时在使用遗留代码时,您别无选择

无论如何,我并不期望我的静态单例类可以在android任务之外访问。但事实确实如此

在我的应用程序中,新的应用程序(相同类型)可以在应用程序堆栈的几个层次上生成。我需要一个干净的单身为每个应用程序。当应用程序从应用程序堆栈中弹出时,单例程序将被上一个应用程序的数据损坏

我最后做的是创建一个静态HashMap的HashMap
谢谢你所有的建议。

那么,现在你希望你没有单身,对吗?那么你是说你想要两个
单身的实例,即你想要一个
双亲,即你不想要单身?为什么不让C成为一个简单的类呢?在Android中,每个新实例都是唯一的(除了实例之间显式使用的任何成员),单例是一个必要的缺点,尽管它们理想地隐藏在一些由经验丰富的开发人员编写并通过库提供的良好实现的API后面(请参阅:事件总线、图像缓存等)。这就是说,在这种情况下,这似乎是一个明确的案例,一个普通的数据成员,而不是一个单身汉,是正确的答案。如果你要做一些笼统的陈述,如“他们是可怕的东西”和“他们不应该被雇用…”,如果你提供证据支持,这将有助于加强你的论点。如果你不这样做,那么粗略地看一眼,这些陈述似乎仅仅反映了可能纯粹是个人观点的东西。你回答的唯一有效点是在第一句中建议OP不使用单件,但由于OP显然不理解“单件”中的“单件”,如果你不作进一步解释,你的回答更适合作为对问题的评论。使用单件不是最好的主意,但有时这是最好的选择。我所要寻找的是一种在新上下文中启动新活动的方法,使用单独的堆和堆栈。
                    Intent intent = new Intent(this.context, B.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

                    context.startActivity(intent);