2013-01-24 110 views
2

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

开始叽叽喳喳:

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

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

它只在Android 2.3.7及以下版本。

+0

你可以添加一些Java代码? –

+1

您是否在启动TwitterActivity时尝试过使用'startActivityForResult()'?我认为这应该改变行为。 – WarrenFaith

回答

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"> 
相关问题