在独特的记忆中开始一项新活动?

时间:2014-08-08 21:35:08

标签: 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>
            <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>

我以下列方式从A开始活动B:

                    Intent intent = new Intent(this.context, B.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

                    context.startActivity(intent);

我试图将这两个活动保存在单独的内存和堆栈中。

提前感谢您的帮助。

杰里

3 个答案:

答案 0 :(得分:1)

不要让C类成为单身人士。这实际上就是单身人士的意思,他们是可怕的事情,这正是他们不应该被任何人雇用的原因。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用Singlton并不是最好的编程习惯,但有时当您使用遗留代码时,您别无选择。

无论如何,我没想到我的静态单例类可以在android任务之外访问。但它确实如此。

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

我最终做的是创建静态HashMap的哈希映射

感谢您的所有建议。