gpt4 book ai didi

android - getIntent() 和 Intent 的子类

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:45 24 4
gpt4 key购买 nike

我写了一个扩展 Intent 的类 MyIntent。然后我使用 MyIntent 的实例来调用 startActivity(MyIntent)。

MyIntent i=new MyIntent(this,NewActivity.class);

构造函数是:

public MyIntent(Context context,Class<?> cls){
super(context,cls);
putExtra(var1,var2);
//other codes
((Activity)context).startActivity(this);
}

但是,当我在新启动的 Activity 中调用 getIntent() 时,getIntent() 的返回值是一个 Intent 而不是 MyIntent,也就是说

getIntent() instanceof Intent // true;
getIntent() instanceof MyIntent // false;

当我尝试 (MyIntent)getIntent() 时,系统抛出 ClassCastException。这是怎么回事?

最佳答案

你不能那样做,因为 Intent 实现了 ParcelableCloneable 接口(interface),当 Intent 对象跨进程移动时它会被重新创建。因此,这将是一个不同的实例。

source code of ActivityManagerProxy, startActivity您会注意到,intent 不会通过引用传递,而是写入 Parcel 以创建新对象。所以之前Activity中创建的Intent对象将不再被引用。

关于android - getIntent() 和 Intent 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com