https://kotlinlang.org logo
#android
Title
# android
t

TheDukerChip

06/11/2019, 7:06 AM
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

louis993546

06/11/2019, 7:20 AM
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

chris.chen

06/11/2019, 7:21 AM
sealed class?
l

louis993546

06/11/2019, 7:21 AM
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

Matej Drobnič

06/11/2019, 7:22 AM
this is VERY old advice
it is from the days when Android device's memory management sucked
😔 3
l

louis993546

06/11/2019, 7:23 AM
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

Matej Drobnič

06/11/2019, 7:25 AM
Here is official word from Android developers on that:

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

z

zokipirlo

06/11/2019, 7:50 AM
ART changed things a lot
t

TheDukerChip

06/11/2019, 9:15 AM
Thanks a lot guys, for your considerations❤️
g

gildor

06/11/2019, 9:44 AM
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

ghedeon

06/11/2019, 10:42 AM
I think it's time for google to finally retire this video an pretend it didn't happen.
🔝 3
😂 2
m

Matej Drobnič

06/11/2019, 12:21 PM
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

jw

06/11/2019, 11:46 PM
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

TheDukerChip

06/12/2019, 8:46 AM
So you are saying that using
enum
doesn't affects the memory or performance, ryt?
👌 2
g

gildor

06/12/2019, 8:55 AM
Doesn’t affect significant enough to worry about it or convert enums to ints just because of this
j

jw

06/12/2019, 1:57 PM
it's really the video manifestation of the phrase "don't pre-optimize"
5 Views