安卓性能优化之枚举

博客介绍了用性能优化代替枚举的方法,指出枚举使用会增加额外内存,较多枚举会增加dex文件,在大型项目中枚举初始化易导致ANR。通过定义常量和注解来限制指定输入内容,给出了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * Created by Administrator on 2019/5/5.
 * 性能优化代替枚举
 * 限制指定输入内容
 * (每个枚举值都是一个单利对象,在使用时会增加额外的内存,较多的枚举会增加dex文件,特别是dex文件多大型项目,枚举的初始化容易导致ANR)
 */

public class MyName {
    public static final int JEK = 1;
    public static final int DAVE = 2;
    public static final int TANM = 3;
    public static final int AAROM = 4;


    //flag设置是否可以多选,value设置可以设置那些值
    @IntDef(flag = true, value = {JEK, DAVE, TANM, AAROM})
    //  @Target(ElementType.TYPE)   //接口、类、枚举、注解
    // @Target(ElementType.FIELD) //字段、枚举的常量
    // @Target(ElementType.METHOD) //方法
    // @Target(ElementType.PARAMETER) //方法参数
    // @Target(ElementType.CONSTRUCTOR)  //构造函数
    // @Target(ElementType.LOCAL_VARIABLE)//局部变量
    // @Target(ElementType.ANNOTATION_TYPE)//注解
    // @Target(ElementType.PACKAGE) ///包
    @Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})

    //注解的存活时间
    // RetentionPolicy.SOURCE 原文件有效,被编译时失效
    // RetentionPolicy.CLASS  在class文件时有效,可能被虚拟机忽略
    // RetentionPolicy.RUNTIME  运行时有效
    @Retention(RetentionPolicy.SOURCE)
    public @interface TYPE {

    }

    //定义个默认值
    private @TYPE int vale = JEK;

    // set  get 方法
    public void setName(@TYPE int type) {
        vale = type;
    }
    
   @TYPE
   public int getName() {
    return vale;
  }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值