我有3个活动(MainActivity,TwitterActivity,WebBrowserActivity)。
WebBrowserActivity用于显示来自Twitter的网络信息。
表现:
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。比按Home键转到Android,然后按Home键并按我的应用程序图标,然后转到TwitterActivity,但是我需要转到MainActivity。怎么办
它仅在android 2.3.7及更低版本上。
最佳答案
在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">