Подтвердить что ты не робот

Настройка "сродство задачи" программно

Есть ли способ установить "сродство задачи" программно? Я имею в виду, например, с некоторым флагом Intent или sth? Я не нашел ничего об этом в документах Android.

Настройка сродства статическим способом в AndroidManifest.xml с "android: taskAffinity" не подходит для моих потребностей.

4b9b3361

Ответ 1

Вы не можете.

taskAffinity содержится в ActivityInfo, который является членом Activity.

Исходный код Деятельности

public class Activity extends ContextThemeWrapper
    ...
    ... {
    // set by the thread after the constructor and before 
    // onCreate(Bundle savedInstanceState) is called.

    @UnsupportedAppUsage
    /*package*/ ActivityInfo mActivityInfo;
 }

И у ActivityInfo есть taskAffinity.

Исходный код ActivityInfo

/**
 * Information you can retrieve about a particular application
 * activity or receiver. This corresponds to information collected
 * from the AndroidManifest.xml <activity> and
 * <receiver> tags.
 */
public class ActivityInfo extends ComponentInfo implements Parcelable {

   /**
    * The affinity this activity has for another task in the system.  The
    * string here is the name of the task, often the package name of the
    * overall package.  If null, the activity has no affinity.  Set from the
    * {@link android.R.attr#taskAffinity} attribute.
    */
    public String taskAffinity;

Согласно комментарию исходного кода, информация о taskAffinity взята из AndroidManifest.xml. И нет никакого открытого метода для установки mActivityInfo.taskAffinity.

Ответ 2

Android: сближение задач и задача Clear

Проверьте ответ Дэвида Вассера. В большинстве случаев нам не нужно давать FLAG для внешних намерений, но, конечно же, вы можете это сделать. Если вы хотите получить новую функцию задания по аффинности, определите "Intent.FLAG_ACTIVITY_NEW_TASK"

Ответ 3

Используйте этот метод: finishAffinity();