2021年6月23日 星期三

Android Debug 紀錄之 UnknownHostException

Fatal Exception: java.net.UnknownHostException
Unable to resolve host "xxx.xxx.com": No address associated with hostname



這個問題在於如果你的 call api 時是沒有網路的,會產生的exception,要記得把他 catch 起來^^

Android Debug 紀錄之 CalledFromWrongThreadException、BadTokenException

Fatal Exception: android.view.ViewRootImpl$CalledFromWrongThreadException
Only the original thread that created a view hierarchy can touch its views.



這個完全沒什麼好說的,就是沒在UI thread 調用 UI 物件像是各種 view,到底為什麼這樣的 code 可以通過測試我也是不懂,開發者只要有自己測過就一定會 crash 嘛!

bulid app 時常發生的問題

Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: debug

why???

2021年6月21日 星期一

kotlin typealias 用法筆記

之前去聽 kotlin FP 的讀書會時,講者很快的帶過了這個關鍵字,那時候只覺得很神奇,近日為了將 lambda 作為參數傳遞,本 lambda 還帶參數,寫起來落落長,就去找簡化的方法。

Interface Or Lambda 

我使用的場景其實應該可以用 interface 就好,但覺得 typealias 的功能實在太酷,直接將我原本的 lambda 命名為一個叫簡短的名字,雖然參數只能放型別,但感覺上比宣告一個 interface 炫多了XD

typealias aGoodName = (String, String) -> Unit

疑慮的部分就是參數只能放型別,這樣會不會兩個月後就忘記這兩個參數是要幹嘛?!雖然是可以到實際調用處看或是寫註解,但好像不是根本的解決之道...



2021年6月17日 星期四

Android webview programming click class in HTML 自動點擊 webview 的物件



最近有個需求是要依照後端發來的推播去開啟 webview 的指定頁面,頁面的順序像是這樣:

A page click button and then redirect to B page...

以此類推

2021年6月12日 星期六

adb 使用 android.intent.action.VIEW 開啟 deeplink 會缺少部分網址(query的部分)

 這幾天在重構公司的 deeplink 事件,tune 的時候使用 adb 發事件給 android 後發現有帶 query 的網址會少 query 那一段


原本指令

adb shell am start -a android.intent.action.VIEW -d "https://aaa.183club.com/5566/633.html?tab=817&action= fate&value=9478" com.qqq.aaa.ddd

2021年6月9日 星期三

Memory Leak Fix: when use timer in viewholder

當開始使用 Leakcanary 之後,我的興趣就從寫 code 變成找 Memory Leak (以下簡稱ml)了XD

debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'

2021年6月8日 星期二

koin 注入 viewModel 時用 byVewModel 會無法 launch viewModelScope, 須改用getViewmodel

情境:

使用 koin "io.insert-koin:koin-android:3.0.2"

viewModel 中使用 viewModelScope.launch {}

在 viewpager 右滑多個 fragment 後,往回滑,在 fragment 重建 view 後,viewModel 跑不進 viewModelScope.launch {} 的 lambda ,在 官方 issue 看到了解法(連結),就是不要使用 byViewModel{} 而是使用 getViewModel(),解是解了,但是為什麼呢?!