在我的应用程序中,我从MainActivity导航到Activity B.然后按HOME按钮,然后再次单击应用程序图标以最大化它。
而不是onResuming我的活动B,它返回到MainActivity。
这是有道理的,因为在我的AndroidManifest.xml中,当您点击其图标时,我使用普通的intent-filters启动MainActivity:
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:label="MyApp"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我正在检查像facebook和twitter这样的流行应用,当你从facebook Feed导航到朋友页面然后按HOME按钮时,他们似乎都没有遇到这个问题。然后再次点击应用图标,它仍然在您朋友的页面上。
当我点击应用图标时,这似乎只会影响应用。例如,如果从MainActivity转到活动B,请按HOME按钮,然后按SQUARE按钮显示我在后台运行的所有应用程序,选择我的应用程序在后台再次最大化,应用程序将正确返回到活动B.
如何确保在点击应用图标时,onResumes
活动B代替?
答案 0 :(得分:0)
android:launchMode="singleTask"
来自Android launchMode doc,
&#34; singleTask&#34;和&#34; singleInstance&#34;活动只能开始一项任务。 它们始终位于活动堆栈的根部。而且, 设备一次只能容纳一个活动实例 - 只有一个 这样的任务。
来自Android back stack singleTask doc,
系统创建一个新任务并在该实例处实例化活动 新任务的根源。但是,如果活动的实例已经存在 在一个单独的任务中,系统将意图路由到 现有实例通过调用其onNewIntent()方法来代替 而不是创建一个新实例。只有一个活动实例可以 一次存在。
注意:虽然活动在新任务中启动,但“后退”按钮 仍然将用户返回到上一个活动。
希望这会对你有所帮助。