以编程方式设置“任务关联”

时间:2011-05-25 07:49:09

标签: android manifest affinity

有没有办法以编程方式设置“任务关联”?我的意思是喜欢一些Intent旗帜或某事?我没有在Android文档中找到任何关于这一点的内容。

使用“android:taskAffinity”在AndroidManifest.xml中以静态方式设置亲和力并不符合我的需要。

3 个答案:

答案 0 :(得分:0)

你不能。

taskAffinityActivityInfo的成员Activity包含。

Source code of 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。

Source code of ActivityInfo

/**
 * Information you can retrieve about a particular application
 * activity or receiver. This corresponds to information collected
 * from the AndroidManifest.xml's <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的公共方法。

答案 1 :(得分:-1)

Android: Task affinity & Clear task

检查David Wasser的回答。大多数时候我们不需要为外部意图提供FLAG,但当然你可以做到。如果你想通过亲和力获得新的任务能力,那么定义' Intent.FLAG_ACTIVITY_NEW_TASK'

答案 2 :(得分:-2)

使用此方法: finishAffinity();