2

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

开始推特:

  Intent myIntent = new Intent(mContext, TwitterActivity.class);    
  mContext.startActivity(myIntent);

当 twitt 发布时,我关闭 TwitterActivity(使用 finish(); 方法)并显示 MainActivity。比我按下 Home 按钮并进入 Android,而不是按下 Home 按钮并按下我的应用程序图标,然后我进入 TwitterActivity,但我需要进入 MainActivity。这是怎么做的?

它仅适用于 android 版本 2.3.7 及以下版本。

4

1 回答 1

1

在 TwitterActivity 的清单条目中,更改android:launchMode="singleInstance"android:launchMode="singleTop".

我认为您正在设置launchMode,因为您希望能够跳出 Twitter 应用程序或网页以从 TwitterActivity 授权用户,然后在完成后返回到您的 TwitterActivity 的同一实例。在这种情况下,TwitterActivity 将位于您的任务堆栈的顶部,因此singleTop会告诉系统重用它。

问题singleInstance在于它使活动成为任务中的唯一活动,这可能解释了为什么最近菜单正在启动 TwitterActivity。(活动元素文档中的更多信息)。

如果您确实需要使用singleInstance,则应考虑将其分配给自己的任务并将其从最近的任务中排除,例如(使用您自己的名称taskAffinity):

<activity
  android:name=".TwitterActivity"
  android:label="@string/app_name"
  android:launchMode="singleInstance"
  android:taskAffinity="com.example.twitter"
  android:excludeFromRecents="true">
于 2013-01-25T08:20:10.110 回答