Android - Как запустить действие из виджета и вернуться на главный экран

1

У меня есть виджет, который при нажатии открывается действие из того же приложения, что и виджет. Когда действие закрывается/отклоняется с помощью кнопки, пользователь увидит полное окно приложения, если приложение было ранее открыто/в памяти. Есть ли способ завершить работу и вернуться на главный экран, а не на существующий экземпляр приложения?

Intent i = new Intent(this,RateIt.class);
i.putExtra("com.sporadicsoftware.NetQ.movie_id",aMovie.title_id);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(context,
                    0, i, PendingIntent.FLAG_UPDATE_CURRENT);
            updateViews.setOnClickPendingIntent(R.id.movie_one_title, pendingIntent);
Теги:
widget

1 ответ

4

Взгляните на Руководство по пользовательскому интерфейсу "Уведомления должны позволить пользователю легко вернуться к предыдущему действию" для аналогичной ситуации в разделе "Действия и задачи" раздела "Основы основных принципов приложения" .

В зависимости от ваших потребностей вы можете использовать флаг намерения FLAG_ACTIVITY_NEW_TASK в сочетании с настройкой индивидуальной близости к вашей деятельности хотите открыть отдельно. Вы можете установить атрибут taskAffinity элемента <activity> вашего манифеста в пустую строку. Это было бы хорошим решением, если вы всегда будете использовать эту деятельность отдельно от остальной части приложения.

Из документация:

android:taskAffinity

Задача, с которой имеет отношение активность. Мероприятия с одинаковой близостью концептуально относятся к одной и той же задаче (к одному и тому же "приложению" с точки зрения пользователя). Сродство задачи определяется сродством его корневой активности.   Сродство определяет две вещи: задачу, в которой действие переопределяется (см. Атрибут allowTaskReparenting) и задача, в которой будет выполняться действие при запуске с флагом FLAG_ACTIVITY_NEW_TASK.

     

По умолчанию все действия в приложении имеют одинаковую близость. Вы можете установить этот атрибут, чтобы группировать их по-разному и даже размещать действия, определенные в разных приложениях в рамках одной и той же задачи. Чтобы указать, что активность не имеет сродства к какой-либо задаче, установите ее в пустую строку.

     

Если этот атрибут не установлен, действие наследует набор аффинности для приложения (см. атрибут <application> element taskAffinity). Имя свойства по умолчанию для приложения - это имя пакета, заданное элементом <manifest>.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню