Hey guys, for java in android `enums` are restrict...
# android
t
Hey guys, for java in android
enums
are restricted to use because it takes a bit large memory

https://www.youtube.com/watch?v=Hzs6OBcvNQE

Instead of
enum
android suggested to use the
TypeDef
according to the above video. Can we use the `enum`'s in kotlin or we should go with the any alternatives?
dusty stick 2
🚫 1
🤦‍♂️ 6
l
In recent years, a lot of optimizations has been done to make the cost of enum a lot less. I think the current recommendations is use enum unless you actually benchmark it to be a bottleneck
c
sealed class?
l
I.e. if your biggest memory concern is from enum, then sure go ahead and optimize it. Otherwise, you will probably be better of just optimizing everything else
✔️ 9
m
this is VERY old advice
it is from the days when Android device's memory management sucked
😔 3
l
Sealed class is basically just class + Kotlin compile time check. So if you don’t need all those extra power from a class, just stick to enum
2
m
Here is official word from Android developers on that:

https://youtu.be/IrMw7MEgADk?t=612

z
ART changed things a lot
t
Thanks a lot guys, for your considerations❤️
g
the cost of enum a lot less
enum cost is exactly the same: 1 empty object per enum value, 1 class per enum type
it is from the days when Android device’s memory management sucked
Nothing changed from those days in terms of enum cost, it’s just allocation of an object per enum value and even on Dalvik and first devices with 128-256mb of RAM it never was a real problem
ART changed things a lot
ART has nothing to do with enums, ART improved GC a lot, but because enums never garbage collected, so GC improvement is not really related to enums Object allocation is also faster on ART, so it somehow related to enums on first access, but this time is so small comparing to thousands and thousands of other objects created on app start and even more during app work that it’s just impossible to measure So this advice was outdated in 2015 and even in 2010 pretty questionable trade-off to lose type safety to save a few kilobytes
👍 3
g
I think it's time for google to finally retire this video an pretend it didn't happen.
🔝 3
😂 2
m
Whole premise of the video is that an app has dex file that is somehow only
2556 bytes
. I don't think even Hello World example is that small, with support library 😄
j
Hello World with design lib and everything transitive is 2.5MB
this advice was always wrong, and mostly existed for framework engineers that leaked into regular apps
t
So you are saying that using
enum
doesn't affects the memory or performance, ryt?
👌 2
g
Doesn’t affect significant enough to worry about it or convert enums to ints just because of this
j
it's really the video manifestation of the phrase "don't pre-optimize"