`Day20` - Lesson5 ◦ LiveData & Lifecycle A...
# 100daysofkotlin-2021
j
Day20
• Lesson5 ◦ LiveData & Lifecycle Awareness ▪︎ LiveData : observable data holder class which is lifecycle-aware • lifecycle-awareness : LiveData knows about the lifecycle state of its UI controller observers ▪︎ Two way lifecycle observation connection between UI controller & LiveData (nice diagram) • LiveData will only update UI controllers that are actually on-screen. If UI-controller is off-screen, it gets no updates. When a UI controller goes from off-screen back to on-screen, LiveData will trigger the observer to get the current data immediately. • When UI controller gets destroyed, LiveData internally cleans up its own connection to the observer ▪︎ Backing property & Encapsulation : restricted direct access to the object fields • LiveData should be mutable inside the ViewModel but immutable outside the ViewModel • MutableLiveData vs. LiveData (can be read but not modified), Backing property (allows returning sth from a getter other than the exact object) ▪︎ Event vs. State
Self-Comment
• I always get pre-lesson quizzes (in udacity) wrong^^.. (ex. where should ~~ component go to) But I won’t get intimidated, since who cares, I’m learning haha. Plus, my memories are amazing, amazingly short. (..) I remember that I learned this term “companion object” in the kotlin basics lecture, and even remember that it was confusing at that time, but I just couldn’t recall it 🤯 So I got back to my notion memos, and remembered what this was. So, I had some googling time. • I’m using this as summarizing notepad from some point on.. It somehow seems to ruin this feed, so I’ll separate this to a comment in my own thread, if it bothers any of u 😂 • Was a productive day. I should really take care of my mentality, keep in mind that if there’s a less-productive day, I’ll just have to try harder the next day, but just don’t get stressed too much.
Goals Tomorrow
• Finish Lesson5 and start lesson 6. (As I view the contents, there comes this terminology “coroutine”. Quite thrilling that it is a mystery for me today, but not tomorrow. • (Priority) Lesson5 -> BLE -> Lesson6 & Leetcode
Debuggings and etc. tips • Using Toast & Logs are important for debugging • GuessIt App kept crashing after adding timer functionality. viewModel = ViewModelProviders(this).get(GameViewModel::class.java) was the problem. ◦ At first, I did stupid finger princess googling, not using my eyes and brains but just copied the error message and checked in stack overflow. There was some discussion about ViewModelProviders deprecation issue. ◦ Following a lecture tutorial based on deprecated library is quite annoying, but I’m just taking this as debugging practice and stacking my patience….After all I should handle all these whenever some library I’m using becomes deprecated.. ◦ However, though I updated that line using the ViewModelProvider, app still crashed. So I read the error messages more thoroughly, found out that it was throwing a InstantiationException. After I looked at my GameViewModel again, I figured out that my case was the class has no nullary constructor , I found out that I put strange constructer, maybe some careless auto completion done by option key..? After I fixed that, app didn’t crash again. • Learned how to make commit from a text file. (git commit -F message.txt) • Reviewed companion object reading some blog posts. (1) (2) Was helpful understanding confusing cases of inheritance, learned what shadowing is.
b

Donn Felker's Kotlin Tutorial

Companion Objects @ 2:15:51

Singleton Objects @ 2:21:32

Might help give a better understanding on Companion objects. If you get confused about Singleton when he brings it up, I'd suggest watching it to.
🤩 1
👌 1
🙌 1