我有3个活动(MainActivity,TwitterActivity,WebBrowserActivity)。 WebBrowserActivity用于显示来自Twitter的Web信息。
清单: 1。
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2
<activity
android:name=".TwitterActivity"
android:label="@string/app_name"
android:launchMode="singleInstance" >
<!-- Used for OAuth callback -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="callback"
android:scheme="x-bker-oauth-twitter" />
</intent-filter>
</activity>
3
<activity android:name=".TwitterWebBrowser" />
启动twitter:
Intent myIntent = new Intent(mContext, TwitterActivity.class);
mContext.startActivity(myIntent);
当发布twitt时,我关闭TwitterActivity(使用finish();方法)并显示MainActivity。我按下主页按钮并转到Android,而不是按主页按钮并按我的应用程序图标,然后我转到TwitterActivity,但我需要转到MainActivity。这是怎么回事?
仅适用于Android 2.3.7及更低版本。
答案 0 :(得分:1)
在TwitterActivity的清单条目中,将android:launchMode="singleInstance"
更改为android:launchMode="singleTop"
。
我认为您正在设置launchMode
,因为您希望能够跳转到Twitter应用或网页以从TwitterActivity授权用户,然后在完成后返回到您的TwitterActivity的同一实例。在这种情况下,TwitterActivity将位于任务堆栈的顶部,因此singleTop
将告诉系统重用它。
singleInstance
的问题在于它使活动成为任务中唯一的活动,这可能解释了为什么最近菜单启动了TwitterActivity。 (activity element文档中的详细信息)。
如果您确实需要使用singleInstance
,则应考虑将其分配给自己的任务,并将其从最近的任务中排除,例如(使用您自己的名称taskAffinity
):
<activity
android:name=".TwitterActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:taskAffinity="com.example.twitter"
android:excludeFromRecents="true">