У меня есть виджет, который при нажатии открывается действие из того же приложения, что и виджет. Когда действие закрывается/отклоняется с помощью кнопки, пользователь увидит полное окно приложения, если приложение было ранее открыто/в памяти. Есть ли способ завершить работу и вернуться на главный экран, а не на существующий экземпляр приложения?
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);
Взгляните на Руководство по пользовательскому интерфейсу "Уведомления должны позволить пользователю легко вернуться к предыдущему действию" для аналогичной ситуации в разделе "Действия и задачи" раздела "Основы основных принципов приложения" .
В зависимости от ваших потребностей вы можете использовать флаг намерения FLAG_ACTIVITY_NEW_TASK
в сочетании с настройкой индивидуальной близости к вашей деятельности хотите открыть отдельно. Вы можете установить атрибут taskAffinity
элемента <activity>
вашего манифеста в пустую строку. Это было бы хорошим решением, если вы всегда будете использовать эту деятельность отдельно от остальной части приложения.
Из документация:
android:taskAffinity
Задача, с которой имеет отношение активность. Мероприятия с одинаковой близостью концептуально относятся к одной и той же задаче (к одному и тому же "приложению" с точки зрения пользователя). Сродство задачи определяется сродством его корневой активности. Сродство определяет две вещи: задачу, в которой действие переопределяется (см. Атрибут
allowTaskReparenting
) и задача, в которой будет выполняться действие при запуске с флагомFLAG_ACTIVITY_NEW_TASK
.По умолчанию все действия в приложении имеют одинаковую близость. Вы можете установить этот атрибут, чтобы группировать их по-разному и даже размещать действия, определенные в разных приложениях в рамках одной и той же задачи. Чтобы указать, что активность не имеет сродства к какой-либо задаче, установите ее в пустую строку.
Если этот атрибут не установлен, действие наследует набор аффинности для приложения (см. атрибут
<application>
elementtaskAffinity
). Имя свойства по умолчанию для приложения - это имя пакета, заданное элементом<manifest>
.