我正在使用IBM worklight开发混合应用程序,我必须在现有webview(Cordova webview)的顶部打开另一个webview,所以我创建了一个新活动(WebView Activity)来加载我的外部页面,但是当我通过按主页按钮转到webview活动的后台并再次进入前台我的MainActivity被调用并重新启动应用程序,我在清单文件中使用了singleTop作为我的MainActivity
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
android:launchMode="singleTop"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="com.main.sample.NOTIFICATION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".WebViewActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
android:launchMode="singleTop"
android:theme="@style/Theme.Transparent">
</activity>
我不知道为什么会发生这种情况,我希望我的上一次活动能够恢复而不是主要活动
答案 0 :(得分:1)
阅读模式的文档。这将向您解释正在发生的事情:
&#34; singleTask&#34;和&#34; singleInstance&#34;,只应在&gt; activity有一个ACTION_MAIN和一个CATEGORY_LAUNCHER过滤器。 &GT;想象一下,例如,如果缺少过滤器会发生什么:&gt;意图启动&#34; singleTask&#34;活动,发起新任务,&gt;用户花费一些时间在该任务中工作。然后用户按下&gt;主页按钮。该任务现在被发送到后台并且不是>可见。现在用户无法返回任务,因为它是&gt;没有在应用程序启动器中表示。
这是一个潜在的解决方案。有多种方法可以做到这一点。 尝试在Manifest中指定为Launcher Activity的活动的onCreate方法中使用以下代码:
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
这将在显示Launcher活动之前通过检测到已经有任务正在运行来完成,并且您的应用应该恢复到最后一个可见的活动。