我有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">

10-08 08:05