Запуск приложения из меню последние не запускает основное действие
У меня есть 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, но мне нужно перейти на Основная активность. Как это сделать?
Это только на android версии 2.3.7 и ниже.
1 ответ:
В вашей записи манифеста для TwitterActivity измените
android:launchMode="singleInstance"
наandroid:launchMode="singleTop"
.Я думаю, что вы устанавливаете
launchMode
, потому что вы хотите иметь возможность перейти к приложению Twitter или веб-странице, чтобы авторизовать пользователя из TwitterActivity, а затем вернуться обратно к тому же экземпляру вашего TwitterActivity, когда это будет сделано. В этом случае TwitterActivity будет находиться в верхней части стека задач, поэтомуsingleTop
попросит систему повторно использовать его.Проблема с
singleInstance
заключается в том, что она делает деятельность единственной активность в решении задач, что, вероятно, объясняет, почему в меню "Недавние" запускает TwitterActivity. (подробнее вactivity element docs).Если вам действительно нужно использовать
singleInstance
, Вы должны рассмотреть возможность присвоения ему его собственной задачи и исключения его из недавних, например (используйте свое собственное имя дляtaskAffinity
):<activity android:name=".TwitterActivity" android:label="@string/app_name" android:launchMode="singleInstance" android:taskAffinity="com.example.twitter" android:excludeFromRecents="true">