初探 Jetpack Compose — 渲染機制(Rendering)

March 8, 2021 YANBIN HUNG 0

初探 Jetpack Compose — 渲染機制(Rendering) 如果要正確的使用 Compose 的話,就得要去了解一下他的渲染機制,否則可能會有你意想不到的錯誤狀態發生。而且,這個渲染機制當中其實是有些“黑魔法”的,不像 AOSP 一樣可以靠 Trace code 來了解全貌。 本篇中我用了個人的觀點來整理出一些筆記,希望有助於大家更容易去理解他背後的機制,依序將會介紹: 目前的原生機制 一個簡單的,會動的範例 介紹 Composition 與 ReComposition 如何避免用錯誤的方式來寫 Compose AOSP : Android Open Source Project 是 Read More

No Image

初探 Jetpack Compose — Slot API

January 31, 2021 YANBIN HUNG 0

初探 Jetpack Compose — Slot API 在上一篇中介紹了 Jetpack Compose 中最簡單的用法,也收到了很多回饋,其中最多人回饋的是:這根本跟 flutter 超像的啊!到底有什麼不一樣?很可惜的是,因為我還沒有深入研究過 flutter,所以很難回答這問題。但是今天我將會介紹 Compose 的核心概念,還有他為什麼叫做 Compose 。希望在看完這些介紹後,大家會有不同的啟發或感想! 在介紹核心觀念前,先讓我們看看開發 Android 的一個共同的痛: 客製化 Toolbar 在 App 的開發中,一定少不了 Toolbar 這個元件,大家一定都碰過各種不同客製化的需求,像是最基本的標題置左加上漢堡選單 (下圖第一張),這是 Android Read More

No Image

初探 Jetpack Compose — 介紹篇

December 21, 2020 YANBIN HUNG 0

初探 Jetpack Compose — 介紹篇 最近公司的任務告一段落了,再加上我們本季 OKR 的其中一個目標是:每個人至少研究及分享一個新東西,所以我就把目光放到了 Jetpack Compose ,花了一整個禮拜來研究它,還有試著用它來實作出目前專案的 feature 。 這也是我非常有興趣的主題,已經想玩這個想很久了,接下來,預計至少會寫兩到三篇的文章來介紹它。 另外,由於目前官方的 code lab 還有影片其實已經是非常完整的了,所以我會推薦對英文不排斥的人上去玩看看。我這篇文章已經是第二手的資訊了,再加上現在還是 alpha,以後有可能會改版,可能會有過時的資訊在這上面,當然到時我會想辦法更新文章內容,就是沒辦法像官方這麼快了,如果內容有誤還請見諒。 OKR 是 Object Key-Result 的縮寫,網路上有很多相關學習資源在介紹他,目前 PicCollage 已經跑了有一陣子了,在每季(比較準確的用詞是 Stage)一開始的時候會擬定這一季的目標,學習新技術也會是其中一種可能的目標。 簡介 Read More

初探 Jetpack Compose — 介紹篇

December 21, 2020 YANBIN HUNG 0

初探 Jetpack Compose — 介紹篇 最近公司的任務告一段落了,再加上我們本季 OKR 的其中一個目標是:每個人至少研究及分享一個新東西,所以我就把目光放到了 Jetpack Compose ,花了一整個禮拜來研究它,還有試著用它來實作出目前專案的 feature 。 這也是我非常有興趣的主題,已經想玩這個想很久了,接下來,預計至少會寫兩到三篇的文章來介紹它。 另外,由於目前官方的 code lab 還有影片其實已經是非常完整的了,所以我會推薦對英文不排斥的人上去玩看看。我這篇文章已經是第二手的資訊了,再加上現在還是 alpha,以後有可能會改版,可能會有過時的資訊在這上面,當然到時我會想辦法更新文章內容,就是沒辦法像官方這麼快了,如果內容有誤還請見諒。 OKR 是 Object Key-Result 的縮寫,網路上有很多相關學習資源在介紹他,目前 PicCollage 已經跑了有一陣子了,在每季(比較準確的用詞是 Stage)一開始的時候會擬定這一季的目標,學習新技術也會是其中一種可能的目標。 簡介 Read More

最佳化你的 gradle 建置時間(As a Android project)

July 13, 2020 YANBIN HUNG 0

在寫這篇文的當下是端午連假的第一天,應該這時候很多人都出去玩吧!但我沒有什麼特別的規劃,就利用時間,紀錄一下最近在公司專案做的事情,我將公司專案的建構時間提升了快兩倍(原本 9–10 分鐘變成 4–5 分鐘)。 有一點要先說的是, Android 官方網站的建議其實我們之前都有做過了,但實際上提升的效果還是很有限,更糟糕的是,在我將全部的 build.gralde檔從 Groovy 轉成 Kotlin 後,整體的建置時間還暴增了六分鐘之多!在意識到問題的嚴重性後,我就開始著手面對問題,並且設法解決他。 接下來的篇幅,我會條列式的整理出這段期間我所學習到的知識並分享給你,我會盡可能的包含各個面向,如果有所缺漏、不完整的,希望可以不吝的提醒我,我會再將這些資訊補充在這篇文章中。 Tip 1: 產生建置時間報表(profile) 我個人覺得這是一個最重要而且也是最應該要做的第一步,如果你不知道你改善了多少,提不出數據,怎麼能夠說服其他人你已經改善了建置速度呢?要產生報表的話,就得要動動手指打指令。不熟悉指令的朋友也別怕,產生報表只需要一行就能完成了: ./gradlew –profile –offline –rerun-tasks assembleDebug >> profile.txt 看起來很長很可怕,別擔心,讓我們一個一個來看 Read More

No Image

Kotlin conf 2019 心得 (下)

January 4, 2020 YANBIN HUNG 0

參加 conference 的第二天,開始出現疲累狀態,沒有像第一天這麼認真聽,而且第一場是 non-technical talk。,所以內容就會比第一天少一點了。 講題:Asynchronous Data Streams with Kotlin Flow https://medium.com/media/144a0140fff4cc876558888a06c46f17/href 終於等到了 Flow 了,身為 RxJava 的長年用戶,一定會用放大鏡來檢視這個新的響應式框架,有比較好嗎?有必要從 RxJava 轉成 Flow 嗎? 首先,講者介紹了 reactive 的運作機制,發送事件與接收處理事件可以發生在不同 thread 上。這點大家應該都不陌生,下圖可以看到與 RxJava Read More

No Image

Kotlin conf 2019 心得 (中)

January 4, 2020 YANBIN HUNG 0

前一篇中介紹了第一天的部分講題,這篇持續來分享第一天下午的講題。 講題:Design of Kotlin Serialization https://medium.com/media/4980e4ba682a34892d09a421bfc06e09/href 在聽這講題之前,我一直以為 kotlin-serialization 是一個跟 GSON 差不多的東西,但聽完發現我錯的很離譜,這個 library 功能非常強大而且是另外一個極具野心的 library。 首先,我又聽到了一次 kotlin multiplatform,為什麼這個這麼重要呢?如果你是 Android 開發者,應該知道目前的 Kotlin Android 是跑在 JVM 上面的,但是,最近 JetBrains Read More

No Image

Kotlin conf 2019 心得 (上)

January 4, 2020 YANBIN HUNG 0

今年有幸參加這一年一度的盛大聚會,往年活動的內容都非常的精彩,當然今年也不意外,同一個時段至少都有 3~4 個主題,主題包含了 kotlin 最新的趨勢以及開發者在使用上的各種心得。以下分享這兩天中看到、學到的東西。 Highlights Kotlin native : 很多講題都包含了 Kotlin native ,例如 library、complier plugin、multiplatform。 Multiplatform : 可以說是今年最夯的主題了,今年幾乎每個時段都有人在講 multiplatform ,使用 kotlin 開發 share library 給 Android 跟 Read More

No Image

Koin 的效能不好,為什麼?

January 19, 2019 YANBIN HUNG 0

前言 之前一直有聽說導入 Koin 後打開 APP 的速度變慢了。恰巧,公司的專案 — Piccollage 在導入 Koin 後也發現了 cold start time 上升了,雖然一直放著不管。直到前幾天看到了這則貼文:https://medium.com/koin-developers/news-from-the-trenches-whats-next-for-koin-994791d572d5。他們發佈了一篇文章承認有效能上的問題,並且會在2.0版中改進。 所以我很好奇,到底是哪裡設計不好?他們又是如何改進的? Koin 基礎架構 首先我們一起來了解一下 Koin 是怎麼運作的吧!Koin 我大致分成三個部分Module、 Start koin、Injection。 Module 有使用過 Koin Read More