当前位置: 首页 > news >正文

贵州省交通工程建设质监局网站今日军事新闻头条打仗

贵州省交通工程建设质监局网站,今日军事新闻头条打仗,目前最好的引流方法,门户网站建设的步骤答案是采用了原型模式。原型模式的好处在于方便地拷贝某个实例的属性进行使用、又不会对原实例造成影响,其逻辑在于对 Cloneable 接口的实现。 话不多说看下 Intent 的关键源码: // frameworks/base/core/java/android/content/Intent.java public cla…

在这里插入图片描述

答案是采用了原型模式。原型模式的好处在于方便地拷贝某个实例的属性进行使用、又不会对原实例造成影响,其逻辑在于对 Cloneable 接口的实现。

话不多说看下 Intent 的关键源码:

// frameworks/base/core/java/android/content/Intent.java
public class Intent implements Parcelable, Cloneable {...private static final int COPY_MODE_ALL = 0;private static final int COPY_MODE_FILTER = 1;private static final int COPY_MODE_HISTORY = 2;@Overridepublic Object clone() {return new Intent(this);}public Intent(Intent o) {this(o, COPY_MODE_ALL);}private Intent(Intent o, @CopyMode int copyMode) {this.mAction = o.mAction;this.mData = o.mData;this.mType = o.mType;this.mIdentifier = o.mIdentifier;this.mPackage = o.mPackage;this.mComponent = o.mComponent;this.mOriginalIntent = o.mOriginalIntent;...if (copyMode != COPY_MODE_FILTER) {...if (copyMode != COPY_MODE_HISTORY) {...}}}...
}

可以看到 Intent 实现的 clone() 逻辑是直接调用了 new 并传入了自身实例,而非调用 super.clone() 进行拷贝。

默认的拷贝策略是 COPY_MODE_ALL,顾名思义,将完整拷贝源实例的所有属性进行构造。其他的拷贝策略是 COPY_MODE_FILTER 指的是只拷贝跟 Intent-filter 相关的属性,即用来判断启动目标组件的 actiondatatypecomponentcategory 等必备信息。无视启动 flagbundle 等数据。

// frameworks/base/core/java/android/content/Intent.java
public class Intent implements Parcelable, Cloneable {...public @NonNull Intent cloneFilter() {return new Intent(this, COPY_MODE_FILTER);}private Intent(Intent o, @CopyMode int copyMode) {this.mAction = o.mAction;...if (copyMode != COPY_MODE_FILTER) {this.mFlags = o.mFlags;this.mContentUserHint = o.mContentUserHint;this.mLaunchToken = o.mLaunchToken;...}}
}

还有中拷贝策略是 COPY_MODE_HISTORY,不需要 bundle 等历史数据,保留 action 等基本信息和启动 flag 等数据。

// frameworks/base/core/java/android/content/Intent.java
public class Intent implements Parcelable, Cloneable {...public Intent maybeStripForHistory() {if (!canStripForHistory()) {return this;}return new Intent(this, COPY_MODE_HISTORY);}private Intent(Intent o, @CopyMode int copyMode) {this.mAction = o.mAction;...if (copyMode != COPY_MODE_FILTER) {...if (copyMode != COPY_MODE_HISTORY) {if (o.mExtras != null) {this.mExtras = new Bundle(o.mExtras);}if (o.mClipData != null) {this.mClipData = new ClipData(o.mClipData);}} else {if (o.mExtras != null && !o.mExtras.isDefinitelyEmpty()) {this.mExtras = Bundle.STRIPPED;}}}}
}

总结起来:

Copy Modeaction 等数据flags 等数据bundle 等历史
COPY_MODE_ALLYESYESYES
COPY_MODE_FILTERYESNONO
COPY_MODE_HISTORYYESYESNO

除了 Intent,Android 源码中还有很多地方采用了原型模式。

  • Bundle 也实现了 clone(),提供了 new Bundle(this) 的处理:

    public final class Bundle extends BaseBundle implements Cloneable, Parcelable {...@Overridepublic Object clone() {return new Bundle(this);}
    }
    
  • 组件信息类 ComponentName 也在 clone() 中提供了类似的实现:

    public final class ComponentName implements Parcelable, Cloneable, Comparable<ComponentName> {...public ComponentName clone() {return new ComponentName(mPackage, mClass);}
    }
    
  • 工具类 IntArray 亦是如此:

    public class IntArray implements Cloneable {...@Overridepublic IntArray clone() {return new IntArray(mValues.clone(), mSize);}
    }
    

原型模式也不一定非得实现 Cloneable,提供了类似的实现即可。比如:

  • Bitmap 没有实现该接口但提供了 copy(),内部将传递原始 Bitmap 在 native 中的对象指针并伴随目标配置进行新实例的创建:

    public final class ComponentName implements Parcelable, Cloneable, Comparable<ComponentName> {...public Bitmap copy(Config config, boolean isMutable) {...noteHardwareBitmapSlowCall();Bitmap b = nativeCopy(mNativePtr, config.nativeInt, isMutable);if (b != null) {b.setPremultiplied(mRequestPremultiplied);b.mDensity = mDensity;}return b;}
    }
    
http://www.mnyf.cn/news/48723.html

相关文章:

  • 为什么使用html5网站怎么建立自己的企业网站
  • 南宁建站服务公司保定网站seo
  • 南宁网站制作最新招聘信息推广资讯
  • 园林景观设计公司点评的网站和论坛热搜榜排名前十
  • 海口手机版网站建设推广普通话的意义50字
  • 怎么根据别人的网站做自己的网站国内最新新闻摘抄
  • 呼伦贝尔做网站公司2023年8月份新冠症状
  • 可信网站认证有用吗seo研究中心怎么了
  • 网站内容建设机制网络广告设计
  • 一级域名网站怎样收费的舆情分析网站免费
  • ppt模板网站源码小红书推广策略
  • 网站板块模板优化法治化营商环境
  • 做网站要用到什么软件长沙seo排名收费
  • 网上商城运营推广方案广州seo推广公司
  • 网站 导航条万能bt搜索引擎
  • 招聘网站怎么投自己做的简历市场营销策略有哪4种
  • 各种浏览器网站大全广州网站制作公司
  • 住建局网站官网微信引流推广精准粉
  • 张家港做政府网站的公司南京百度关键字优化价格
  • 好用网站推荐免费查网站关键词工具
  • 现在做网站还赚钱吗全球中文网站排名
  • 网站备案 上一级服务商名称网站seo查询站长之家
  • 有什么做详情页的参考网站互联网广告精准营销
  • 福建金融公司网站建设免费建网站
  • 哪有做网站的公司网站做外链平台有哪些
  • 企业网站建设方案书 范本百度排名优化工具
  • 网站内容页怎么做的网络营销促销方案
  • 网站建设的目的和意义 政府百度客服中心人工电话
  • wordpress简单企业站网络营销试卷
  • 平面设计做名片都去那个网站苏州关键词优化软件