我的应用程序有三个活动,如A -> B-> C
。
通过startActivityForResult()
从另一项活动调用活动A.活动B和C也被类似地调用。我也必须从通知栏调用活动A(如果有一些特定的通知)。
现在,如果我现在处于活动B或C中,并且我点击通知栏,并且调用活动A,则应用程序仅转到活动A,并且通过活动B或C输入的数据不会保留。
我不想要这样的行为。我希望如果我点击通知,它应该只重定向到当前屏幕。有人可以提供帮助。 (我将activity:launchMode
称为SingleTask
)。
答案 0 :(得分: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>
这是另一个可能有用的问题:Android singleTask or singleInstance launch mode?
答案 1 :(得分:0)
您可以使用静态变量来确定其他数据。但是,我不确定您希望从其他活动访问多少或哪种类型的数据。
同样,写入持久存储可能会起作用,但同样重要的是 - 您存储的数据的模糊性以及如何难以回答。只需在每个Activity的onResume
和onSuspend
方法中编写/读取持久存储(或者创建超级Activity类并将其扩展为A,B和C.