单一活动实例

Sac*_*and 7 java notifications android android-activity

我的申请有三个活动说A -> B-> C.

活动A通过另一个活动调用startActivityForResult().活动B和C也被类似地调用.我也必须从通知栏调用活动A(如果有一些特定的通知).

现在,如果我现在处于活动B或C中,并且我点击通知栏,并且调用活动A,则应用程序仅转到活动A,并且通过活动B或C输入的数据不会保留.

我不想要这样的行为.我希望如果我点击通知,它应该只重定向到当前屏幕.有人可以提供帮助.(我提到activity:launchModeSingleTask).

der*_*ann 19

使用android:launchMode="singleTask"可能是最好的方法,因为如果活动已经在运行,它将不会重新创建活动.只需将其添加到AndroidManifest.xml中的活动中,您就应该全部设置好.

<activity
    android:name=".MyActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>
Run Code Online (Sandbox Code Playgroud)

这是另一个可能有用的问题:Android singleTask或singleInstance启动模式?

  • 不,它不起作用。我尝试了很多,但只提到单一任务,是行不通的 (2认同)

Cra*_*ck9 0

您也许可以使用静态变量来确定其他数据。不过,我不确定您希望从其他活动访问多少或什么类型的数据。

写入持久存储也可能有效,但同样,您存储的数据以及存储方式的模糊性使得很难回答。onResume只需在每个 Activity 的方法和方法中写入/读取持久存储onSuspend(或创建超级 Activity 类并为 A、B 和 C 扩展它)。