开发者

Setting "task affinity" programmatically

is there a way to set the "task affinity" programmatically? I mean like with some Intent flag or sth? I didn't find anything about this being possible in the Android docs.

Setting the affinity in a static way in the AndroidManifest.xml with android:taskAffinity does not suit my need开发者_如何学编程s.


You cannot.

taskAffinity is contained by ActivityInfo, which is member of 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;
 }

And ActivityInfo has 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;

According to the comment of source code, information of taskAffinity is collected from AndroidManifest.xml. And there is no public method to set mActivityInfo.taskAffinity.


Use this method :

finishAffinity();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜