美文网首页
Android 枚举

Android 枚举

作者: ChenME | 来源:发表于2020-05-25 12:08 被阅读0次

前言

曾一直纠结于该不该在 Android 中使用枚举类,网上也是众说纷纭。至于官方曾给出的建议「枚举通常会比静态常量多两倍以上的内存占用,所以你应该应该的避免在 Android 中使用枚举」,那是 Android 刚发布的时候的建议,很多人一直被这句话影响着,避免使用枚举。但是对于简单的枚举来说,Proguard 是可以将其优化为整形的,所以可以尽管放心使用。对于其他场景下,大家可以酌情处理,毕竟现在 Android 手机动辄几个G的内存,少量使用也不会影响到多少性能的。

enum class Color {
    RED, WHITE, BLACK, BLUE, GREEN, GRAY
}
// 可以放心使用,Proguard 是可以将其优化为整形

在 Proguard 时,若要将枚举转换成 Int 值,需要在 Proguard 文件中加入第一行,并且不能有 -dontoptimize 指令

-optimizations class/unboxing/enum

1. 复杂使用,方便逻辑处理

enum class UserType(val typeCode: Int, val tabIndex: Int) {
    GUEST(1001, 0),
    NORMAL(1002, 1),
    VIP(1003, 2),
    SVIP(1004, 3),
}

2. 常量

  1. 常量池
const val Status_OK = 1
const val Status_Fail = 2
const val Status_Empty = 3
const val Status_End = 4
@IntDef(Status_OK, Status_Fail, Status_Empty, Status_End)
@Retention(AnnotationRetention.SOURCE) // 注解仅保留在源码,不被编译到 .class 文件中
annotation class NetStatus
  1. 使用
private fun convertNetStatus(@NetStatus netStatus: Int): String {
    return when (netStatus) {
        Status_OK -> "正常"
        Status_Fail -> "失败"
        Status_Empty -> "数据数据为空"
        else -> "到达结尾"
    }
}

相关文章

  • Android小经验

    你应该知道的那些Android小经验 1.枚举提供类型安全 Android代码替代枚举的正确之道 2.匿名toke...

  • Android 枚举

    前言 曾一直纠结于该不该在 Android 中使用枚举类,网上也是众说纷纭。至于官方曾给出的建议「枚举通常会比静态...

  • 枚举 学习笔记

    android 中 我们通常推荐使用 @IntDef 等 代替使用 枚举,很多同学有疑问,为什么抛弃 枚举。我们现...

  • Kotlin零基础学习 枚举

    枚举让代码变得更可读,容易理解。Android 用java语言很少写枚举, 因为Enum 需要占用较大的内存,所以...

  • apt相关学习资料

    【Android开发@IntDef完美替代Enum (枚举)】https://www.jianshu.com/p/...

  • Android 尽量避免使用Enum

    Android之使用枚举利弊及替代方案 知识点: 概述 为什么要使用枚举? 使用 Enum 的缺点 解决方案 总结...

  • Android 性能优化

    一. 内存优化 Android 垃圾回收与内存优化 不要过度使用枚举,枚举占用的内存空间要比整型大。 适度使用静态...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • Android使用枚举正确姿态

    大家应该都知道Android建议不要用Java枚举,它占用内存很大图片 那实际开发中肯定是要用Java枚举的,那有...

  • Android中使用注解替代枚举

    枚举最大的作用是提供了类型安全。为了弥补Android平台不建议使用枚举的缺陷,官方推出了两个注解,IntDef和...

网友评论

      本文标题:Android 枚举

      本文链接:https://www.haomeiwen.com/subject/uxqyahtx.html