ghi*_*ita 2 android android-manifest kotlin
我有 ActivityA 作为启动器活动。
从 ActivityA 我打开 -> ActivityB。我把应用程序放在后台。
当我从最近打开应用程序时,应用程序将通过 ActivityB 恢复。当我从主屏幕打开应用程序时,应用程序将通过 ActivityA 恢复,而无需调用 onCreate(),只需调用 onResume()。
当我从主屏幕打开应用程序时,为什么 ActivityB 从堆栈中清除,即使从未调用 ActivityA 的 onCreate() ,以及如何解决此问题?
清单文件如下所示:
活动A:
<activity-alias
android:name=".Launcher"
android:label="@string/app_name"
android:targetActivity="path.ActivityA">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity
android:name=".path.ActivityA"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
android:theme="@style/BlackIntroTheme"
android:windowSoftInputMode="adjustPan">
<nav-graph android:value="@navigation/graph1" />
<nav-graph android:value="@navigation/graph2" />
<nav-graph android:value="@navigation/graph3" />
<nav-graph android:value="@navigation/graph4" />
</activity>
Run Code Online (Sandbox Code Playgroud)
活动B:
<activity
android:name=".path.ActivityB"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
android:windowSoftInputMode="adjustPan" />
Run Code Online (Sandbox Code Playgroud)
这就是Activity堆叠的工作原理,这里launchMode是所有s的一些很好的例子,文档中更复杂的信息
简而言之 -Activity启动singleTask(再次)将清除上面的所有内容Activities。你已经MAIN Activity用这个声明了你的第一个launchMode,所以每次点击设备启动器上的图标都会清除你的Activities堆栈。您可以通过重写onNewIntent方法来跟踪它。从最近打开的内容中选择只会将所有Activities堆栈放在前面,最后打开的内容位于 ofc 之上。
考虑删除launchMode(这对您来说是必要的行吗?)或将其设置为standard(默认)
android:launchMode="standard"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |