成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

中國電信營業廳: 感受 Kotlin 的 加速度

開發 前端
中國電信電子渠道運營中心,屬于中國電信三大主渠道之一,負責電信線上渠道的管理與運營。電信營業廳 app 則是中國電信線上渠道的主要入口。目前該應用的注冊用戶超過 2 億,月活躍用戶接近 6,000 萬,月交易額在 10 億以上。

  "我們手上是一個很成熟的項目,所以毫無疑問需要保留 Java 代碼,目前只會在新開發的頁面中使用 Kotlin,并已經感受到了它帶來的便利。隨著功能的迭代,我們相信更多的功能會轉而使用 Kotlin。"

—— 付迎鑫,電信營業廳技術負責人

中國電信電子渠道運營中心,屬于中國電信三大主渠道之一,負責電信線上渠道的管理與運營。電信營業廳 app 則是中國電信線上渠道的主要入口。目前該應用的注冊用戶超過 2 億,月活躍用戶接近 6,000 萬,月交易額在 10 億以上。

電信營業廳應用的技術團隊所面臨的挑戰,基本都和 "速度" 有關:

  • 電信營業廳 app 不是簡單的工具應用,而是中國電信在線服務的官方品牌,并基于這個定位打造成了包括電商、互聯網直播、閱讀、音樂、影視、游戲、資訊、生活服務、公益事業的綜合服務平臺。要確保如此繁多的功能都流暢穩定地運行,對技術團隊的開發效率都有十分高的要求。
  • 龐大的用戶群體也使得應用運行的硬件和平臺十分多樣,技術團隊需要跟得上用戶們更換新設備、更新操作系統的速度。
  • 大型應用自然也會有龐大的歷史資產,一旦需要對這些資產進行迭代,也需要盡可能降低時間成本。

而 Kotlin 帶來的 "加速度",則讓開發團隊切實感受了一把 "推背感"。

第一腳油門總是需要慎重

2017 年上海,開發團隊在谷歌開發者大會上了解到 Kotlin 技術框架已經日趨成熟,在看到很多主流應用紛紛開始使用 Kotlin 之后,團隊便決定將 Kotlin 作為重點研究和學習的方向,并開始定期舉辦內部的學習和分享活動。

[[352088]]

△ 電信營業廳技術團隊核心成員于谷歌開發者大會。

左起: 付迎鑫 (電信營業廳技術負責人)、劉峻宇 (電信營業廳星播客項目經理)、曾皓 (電信營業廳 Android 項目經理)、張熠 (電信營業廳 Android 項目經理)、黃森燊 (電信營業廳 Android 開發工程師)

但對開發者們來說,感受一門語言最直接的方式,依然還是上手開發。于是團隊決定先在中國電信渠道中心的內部應用 "電渠報表" 中使用 Kotlin 作為主打開發語言。

十分簡潔的語法,對 lambda 表達式的支持,以及充分考慮了現代編程需求的架構,讓團隊 "打開了新世界的大門"。之后 Kotlin 很快就出現在了中國電信渠道中心的各個核心業務中,包括本文開頭提到的電信營業廳應用,以及電信星播客應用。

"目前來看,項目整體已經有 20% 在使用 Kotlin,開發新功能的話 50% 的代碼都是 Kotlin。"

—— 付迎鑫,電信營業廳技術負責人

中国电信营业厅: 感受 Kotlin çš„ 加速度 

△ 用來 "小試牛刀 的電渠報表應用

 

開得快,開得穩

其實很多時候,"快" 和 "穩" 并不矛盾——疾馳的跑車如果時不時爆胎,那顯然也是跑不快的。

空指針異常 (NPE) 導致的崩潰 (或 ANR) 就是讓開發者和用戶們沮喪的 "爆胎"。Kotlin 可以保護項目避免對可空類型進行誤操作。如果類型檢測正確,編譯器還會進行自動類型轉換,NPE 的出現概率降低了 80% 之多,項目穩定性和健壯性顯著提高,更為對接和展示各省返回的業務數據打下了良好的基礎。

Kotlin 的另一個關鍵新特性是協程,它是一個輕量級的線程,一個線程中可以創建任意個協程,線程的執行和結束是由操作系統調度的,而協程可以讓開發者手動控制其執行和結束。在項目中,團隊會結合使用 Retrofit 和協程來處理網絡請求,從而更好地控制任務的執行,這樣會比單純使用線程更加節省資源,也更加高效。在使用協程后,團隊得以降低首頁各個頻道接口調用所需的資源,接口調用周期也更加可控。目前電信營業廳的首頁和商城等核心頁面都是通過 Kotlin 打造出流暢的使用體驗。

Kotlin 的 "快" 還體現在對代碼的精簡上。對于習慣了冗長 Java 代碼的 Android 開發者來說,Kotlin 的 SAM (Single Abstract Method) 轉換一下子縮減大量的模版代碼可能會讓他們不太適應——尤其是在通過 lambda 表達式實現 SAM 轉換的時候。但更簡潔、更有可讀性的代碼無疑可以讓開發者的注意力更容易集中在業務邏輯上,而不是冗長的模版代碼上。

另一個能大量精簡代碼的地方是控件綁定,以前在 Activity 中需要為綁定控件編寫大量的代碼 (沒錯,就是 "findViewById")。引入 Jetpack View Binding 之后,ID 可以直接當做變量使用,在 ViewBinding 推出之后,配合 Kotlin 能寫出更加安全和簡潔的代碼。

是時候看看遠方的風景了

使用 Kotlin 帶來的另一個好處,就是進入 Android 平臺新功能的 "快車道"。

比如 Android 10 的時候平臺增加了對折疊屏設備的支持,但想要讓用戶在折疊/展開設備時感覺流暢,免不了需要讓應用妥善保存界面狀態和支持配置變更,用 Java 編寫這種 "保存/讀取配置" 的工作雖然可行,但 Kotlin 的 lambda 解構方式能夠幫助開發者更加方便地對需要保存的實體類和相關配置進行修改和讀取,代碼更加精簡,可讀性也更好。

△ 電信營業廳的折疊態和展開態

在 Android 支持 5G 之后,開發團隊可以通過 ConnectivityManager 類拓展的新方法為 5G 用戶打造更加快速的網絡體驗。對那些流量敏感的用例,也可以直接使用網絡連接 API 來檢測設備是否進行了高帶寬連接,并能檢查連接是否計費。這時,開發團隊大量使用了 Kotlin 的局部委托屬性,使代碼更加清晰明了。

網絡連接 API

https://developer.android.google.cn/reference/android/net/ConnectivityManager

識別非計費狀態

https://developer.android.google.cn/reference/android/net/NetworkCapabilities.html#NET_CAPABILITY_NOT_METERED

來自團隊的經驗分享

從接觸、了解 Kotlin,到逐步嘗試,乃至正式采用,電信營業廳技術團隊總結了一些第一手的經驗,這里和大家分享。

  • 在使用 Kotlin 前,首先要對項目組成員對 Kotlin 的熟悉程度做一個簡單的評估。對于新項目來說,需要對項目本身工作量進行評估,如果時間規劃上比較充裕,可以考慮引入 Kotlin,這也可以讓開發團隊在實踐中更加了解 Kotlin;而對于老項目來說,就需要綜合考慮兼容性、穩定性、維護性等其他相關因素。
  • 需要為兼容性相關問題多預留一些解決時間,尤其是項目組成員對 Kotlin 還不那么熟悉的時候。
  • 如果在開發過程中發現最新的 Kotlin 需要升級到 AndroidX,需要慎重推進。因為升級 AndroidX 又會和很多第三方庫產生沖突,這時只能通過與第三方進行協調來解決問題。

"我們會繼續加大在 Kotlin 上的投入,目標是在新項目中 100% 使用 Kotlin。"

—— 付迎鑫,電信營業廳技術負責人

更簡潔、更高效、更現代的 Kotlin,已經讓電信營業廳技術團隊感受到了真實的 "加速度"。您是否已經準備好進入 Android 開發的 "快車道" 了呢?

 

 

責任編輯:張燕妮 來源: Google
相關推薦

2017-08-25 10:31:35

異業屬性常態化

2012-03-09 09:26:47

電信版iPhone 4S

2011-01-21 18:06:13

華為1588v2時鐘

2021-03-09 10:10:23

中國電信ZStack

2011-01-18 13:16:56

2013-08-21 15:02:09

NECExpressClus

2010-12-27 14:02:53

2013-06-26 09:39:26

云平臺云資源管理ERP

2011-12-09 12:07:53

電信

2011-01-21 10:07:51

2020-10-18 11:11:27

5G

2013-02-01 18:18:43

Windows Ser中國電信案例

2014-02-17 16:22:07

電信TD-LTE4G

2009-08-31 16:12:41

中國電信軟件商店

2012-10-23 13:14:43

2014-03-31 09:32:19

電信版三星GALAXY S5

2010-11-30 16:07:41

2014-06-23 15:15:31

WiFi

2013-11-18 14:03:17

世界通信展中國電信4G
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 四虎国产| 草久在线视频 | 一级a性色生活片久久毛片 一级特黄a大片 | 日韩色视频 | 国产乱码久久久久久 | 欧美久久免费观看 | 久久久一区二区三区四区 | 中文字幕一区二区三区不卡 | 中文字幕亚洲无线 | 国产乱码精品一区二区三区五月婷 | 特黄色一级毛片 | 综合精品 | 久久久久久国产精品久久 | 夜夜骚视频 | 国产精品有限公司 | 国产成人精品一区二区 | 99综合| 久久婷婷av | 黑人精品欧美一区二区蜜桃 | 久久久片 | 日韩中文字幕在线视频 | 日韩av免费在线电影 | 久久久久久免费毛片精品 | 精品国产乱码久久久久久牛牛 | 精品国产欧美一区二区三区不卡 | 久久婷婷国产麻豆91 | 欧美日韩视频在线播放 | 久久久影院 | 日韩精品成人 | 久久一区二区三区四区 | 欧美一级久久 | 在线观看毛片网站 | 97色在线观看免费视频 | 日韩精品一区二区三区在线播放 | 国产一区二区三区精品久久久 | 亚洲一区国产精品 | 久久一视频| 日本电影免费完整观看 | 在线观看中文字幕 | 亚洲a视频 | 国产免费麻豆视频 |