Android Weekly Notes #462

Android Weekly Issue #462

How to parse JSON in Android using Kotlin

原來不用第三方庫解析JSON也挺容易的, 就用JSONTokener就行.

Android Vitals - Tap Response Time

Py對點(diǎn)擊響應(yīng)時(shí)間的研究.

Handling back presses in Jetpack Compose

關(guān)于Compose如何處理back.

首先介紹了導(dǎo)航庫的基本實(shí)現(xiàn).

一個(gè)簡單的單向數(shù)據(jù)流:

abstract class DetailViewModel : ViewModel() {
    abstract val state: StateFlow<DetailState>
    abstract fun onAction(action: Action)
}

如果我們想獲取back的action來進(jìn)行處理呢?

如果是覆寫Activity.onBackPressed()可能會有點(diǎn)丑. 不是很推薦, 見官方文檔.

Compose有這么一個(gè)BackHandler composable (added in Activity Compose in 1.3.0-alpha02):
源碼是這樣:

@Composable
public fun BackHandler(enabled: Boolean = true, onBack: () -> Unit) {
    // Safely update the current `onBack` lambda when a new one is provided
    val currentOnBack by rememberUpdatedState(onBack)
    // Remember in Composition a back callback that calls the `onBack` lambda
    val backCallback = remember {
        object : OnBackPressedCallback(enabled) {
            override fun handleOnBackPressed() {
                currentOnBack()
            }
        }
    }
    // On every successful composition, update the callback with the `enabled` value
    SideEffect {
        backCallback.isEnabled = enabled
    }
    val backDispatcher = checkNotNull(LocalOnBackPressedDispatcherOwner.current) {
        "No OnBackPressedDispatcherOwner was provided via LocalOnBackPressedDispatcherOwner"
    }.onBackPressedDispatcher
    val lifecycleOwner = LocalLifecycleOwner.current
    DisposableEffect(lifecycleOwner, backDispatcher) {
        // Add callback to the backDispatcher
        backDispatcher.addCallback(lifecycleOwner, backCallback)
        // When the effect leaves the Composition, remove the callback
        onDispose {
            backCallback.remove()
        }
    }
}

具體使用就很簡單了:

@Composable
fun Detail(
    state: DetailState,
    onBack: () -> Unit,
) {
    BackHandler(onBack = onBack)
    Scaffold(
        topBar = { DetailTopAppBar(onBack) }
    ) {
        // detail content
    }
}

Animate as State and Animation Specs

關(guān)于Compose的動畫選擇和實(shí)現(xiàn).

Compose, Camera and Canvas

這人的第二周挑戰(zhàn)居然搞了一個(gè)番茄鐘.

Android Runtime — How Dalvik and ART work?

上期有一個(gè)視頻: https://www.youtube.com/watch?v=0J1bm585UCc
這應(yīng)該是配套文章.

Assign multiple styles to a single View in Android

給View疊加多個(gè)style.

貌似只適用于自定義View.

Using DataStore With Kotlin Serialization

DataStore + Kotlin serialization.

How to Pull Request..

關(guān)于PR的種種.

Libraries & Code

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌休里,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槐瑞,死亡現(xiàn)場離奇詭異撇簿,居然都是意外死亡柔袁,警方通過查閱死者的電腦和手機(jī)唧喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進(jìn)店門捣卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人八孝,你說我怎么就攤上這事董朝。” “怎么了干跛?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵子姜,是天一觀的道長。 經(jīng)常有香客問我楼入,道長哥捕,這世上最難降的妖魔是什么牧抽? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮扭弧,結(jié)果婚禮上阎姥,老公的妹妹穿的比我還像新娘记舆。我一直安慰自己鸽捻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布泽腮。 她就那樣靜靜地躺著御蒲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诊赊。 梳的紋絲不亂的頭發(fā)上厚满,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天,我揣著相機(jī)與錄音碧磅,去河邊找鬼碘箍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鲸郊,可吹牛的內(nèi)容都是我干的丰榴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼秆撮,長吁一口氣:“原來是場噩夢啊……” “哼四濒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起职辨,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤盗蟆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舒裤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喳资,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年腾供,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仆邓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,637評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颅崩,靈堂內(nèi)的尸體忽然破棺而出疾棵,到底是詐尸還是另有隱情,我是刑警寧澤察署,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站峻汉,受9級特大地震影響贴汪,放射性物質(zhì)發(fā)生泄漏脐往。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一扳埂、第九天 我趴在偏房一處隱蔽的房頂上張望业簿。 院中可真熱鬧,春花似錦阳懂、人聲如沸梅尤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巷燥。三九已至,卻和暖如春号枕,著一層夾襖步出監(jiān)牢的瞬間缰揪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工葱淳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钝腺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓赞厕,卻偏偏與公主長得像艳狐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子坑傅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容