почему excludeFromRecents удаляет все действия?



Мое приложение имеет две точки входа (MainActivity и FromNotificationActivity).



Я хочу, чтобы MainActivity появлялся в последних задачах, но не FromNotificationActivity)



С ничем не объявленным в манифесте, если я это сделаю...




  • основная активность

  • назад

  • FromNotificationActivity

  • назад


... Я нахожу FromNotificationActivity, перечисленные в недавних задачах



Если я добавлю android:excludeFromRecents="true" к FromNotificationActivity в манифесте и повторю то же самое последовательность, я не нахожу ничего в последних списках.



Какие заклинания я должен вызвать таким образом, чтобы после приведенной выше последовательности шагов я получил MainActivity в недавнем списке.

578   3  

3 ответов:

По умолчанию все действия приложения имеют одинаковое сродство. Действия с одинаковым сродством концептуально относятся к одной и той же задаче. Следовательно, в этом случае и MainActivity, и FromNotificationActivity относятся к одной и той же задаче. android:excludeFromRecents гарантирует, что задача не указана в последних приложениях. Это причина, когда android:excludeFromRecents устанавливается в true для FromNotificationActivity, MainActivity разочарование от истории.

Решение: Используйте android:taskAffinity для задания различных задач для обоих видов деятельности. Используйте android:excludeFromRecents для FromNotificationActivity, Если эта задача должна вообще не показываться в истории.

<activity   
    android:name="com.example.MainActivity"
    android:label="@string/app_name"
    android:taskAffinity=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity> 

<activity android:name="com.example.FromNotificationActivity"
    android:label="@string/notification_name"
    android:taskAffinity=".NotificationActivity"
    android:excludeFromRecents="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity> 

Из документов

Android: excludeFromRecents
следует ли исключить задачу, инициированную этим действием, из списка недавно использованных приложений ("последние приложения"). То есть, когда это действие является корневым действием новой задачи, этот атрибут определяет, должна ли задача не отображаться в списке последних приложений. Установите "true", если задача должна быть исключена из списка; установите" false", если она должна быть включена. Значение по умолчанию: "ложный".

Таким образом, это не действие, а задача, которой управляет этот флаг. Вы не разместили элементы activity в своем манифесте, но я предполагаю, что эти два действия выполняются в одной и той же задаче. Изменение режима запуска на singleTask на обоих из них должно сделать работу.

Вы должны использовать флаг intent от First_Activity до Second_Activity. Нет необходимости объявлять что-либо в манифесте. Используя этот код, действие, которое будет идти для намерения, будет вашим недавним действием.

Intent intent = new Intent(CONTEXT_OF_CURRENT_ACTIVITY, YOUR_ACTIVITY.class);
intent.putExtra("NAME", "VALUE");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

Надеюсь, что это будет полезно..

Comments

    Ничего не найдено.