前言 剛接觸flutter開發(fā)的同學(xué)肯定對一個(gè)概念不陌生:三棵樹,分別是widget樹,element樹和renderobject樹。然后大家就開始搜三棵樹的各種原理,創(chuàng)建流...
前言 剛接觸flutter開發(fā)的同學(xué)肯定對一個(gè)概念不陌生:三棵樹,分別是widget樹,element樹和renderobject樹。然后大家就開始搜三棵樹的各種原理,創(chuàng)建流...
@leeuser 如果你所謂的業(yè)務(wù)封裝是為了便于以后方便的替換圖片加載框架的話,那么你增加一個(gè)接口隔離層就可以了啊,glide是這個(gè)接口的一個(gè)實(shí)現(xiàn),可以考慮使用策略模式,比較麻煩的是你要統(tǒng)計(jì)出這個(gè)接口層支持哪些效果,比如圓角之類的,要操作切換不同框架時(shí),接口隔離層規(guī)定的各種功能都不受到影響
Glide架構(gòu)設(shè)計(jì)藝術(shù)自從Android誕生以來,Bitmap的管理就一直是大問題,為了更好的管理它,不同的圖片加載框架不斷的被推出,從剛開始的ImageLoader,到Picasso,再到現(xiàn)在的...
@foreveri7 哈哈,可以
從零開始寫攔截器攔截器的應(yīng)用是非常廣泛的,okhttp中有攔截器,spring框架中也有攔截器,這個(gè)年代,你要是不知道什么是攔截器你都不好意思說你是程序員。為了防止大家不好意思出門打招呼,今...
@foreveri7 什么意思……
從零開始寫攔截器攔截器的應(yīng)用是非常廣泛的,okhttp中有攔截器,spring框架中也有攔截器,這個(gè)年代,你要是不知道什么是攔截器你都不好意思說你是程序員。為了防止大家不好意思出門打招呼,今...
@不會飛的掃把 算,只要你設(shè)置的scope中包含了第三方依賴就可以
如何開發(fā)一款高性能的gradle transform前言 對于java開發(fā)者來說,大家好像都比較喜歡在編譯期間搞事兒,比如為了做到AOP編程,大家都喜歡利用字節(jié)碼生成技術(shù),常用的有無痕埋點(diǎn),方法耗時(shí)統(tǒng)計(jì)等等。那么Android...
前言 一般來說,如果不是項(xiàng)目中經(jīng)常需要用到很多的動(dòng)畫,大家可能只是對Android動(dòng)畫的原理有一點(diǎn)點(diǎn)了解,比如Android的view動(dòng)畫只是修改繪制,所以點(diǎn)擊事件還是留在原...
自從Android誕生以來,Bitmap的管理就一直是大問題,為了更好的管理它,不同的圖片加載框架不斷的被推出,從剛開始的ImageLoader,到Picasso,再到現(xiàn)在的...
前言 對于java開發(fā)者來說,大家好像都比較喜歡在編譯期間搞事兒,比如為了做到AOP編程,大家都喜歡利用字節(jié)碼生成技術(shù),常用的有無痕埋點(diǎn),方法耗時(shí)統(tǒng)計(jì)等等。那么Android...
身為四大組件之一,Activity可以說是和我們開發(fā)人員打交道最多的組件了,大家平時(shí)開發(fā)時(shí)可能對這個(gè)組件都有一些疑惑,比如為什么啟動(dòng)一個(gè)activity是一個(gè)重量級行為呢(因...
@大空ts翼 現(xiàn)在這套是利用反射實(shí)現(xiàn)的,好處是目標(biāo)模塊只要實(shí)現(xiàn)接口,不需要依賴這個(gè)庫,只要使用的地方依賴了這個(gè)庫就可以,其實(shí)換個(gè)思路利用注解也是可以實(shí)現(xiàn)的,這樣的話目標(biāo)模塊就必須要依賴這個(gè)庫了,因?yàn)橐褂盟淖⒔猓@個(gè)思路和ARouter已經(jīng)沒有什么區(qū)別了。當(dāng)然ARouter現(xiàn)在好像一次只能發(fā)現(xiàn)一個(gè)服務(wù),解決不了文中提到的批量派發(fā)服務(wù)的問題
Android模塊化中的服務(wù)發(fā)現(xiàn)機(jī)制前言 本文討論的其實(shí)是項(xiàng)目經(jīng)過模塊化后的一種情況,如果沒有模塊化需求其實(shí)是無所謂的。如果項(xiàng)目已經(jīng)進(jìn)行了模塊化,推薦大家花幾分鐘看下。 需求 首先,我們來看一張常見的模塊化后的...
@大空ts翼 可以的,本來就是為跨模塊通信設(shè)計(jì)的
Android模塊化中的服務(wù)發(fā)現(xiàn)機(jī)制前言 本文討論的其實(shí)是項(xiàng)目經(jīng)過模塊化后的一種情況,如果沒有模塊化需求其實(shí)是無所謂的。如果項(xiàng)目已經(jīng)進(jìn)行了模塊化,推薦大家花幾分鐘看下。 需求 首先,我們來看一張常見的模塊化后的...
@大空ts翼 不是很明白你的意思,一般來說跨模塊通信都會在兩個(gè)隔離模塊的底層模塊中增加一個(gè)接口,這個(gè)接口的實(shí)現(xiàn)在目標(biāo)模塊,這樣就可以通過這個(gè)接口去調(diào)用目標(biāo)模塊的功能,你提到的判斷是判斷什么呢?某個(gè)模塊特有的話列表中就只有這一個(gè)服務(wù),也不影響啊
Android模塊化中的服務(wù)發(fā)現(xiàn)機(jī)制前言 本文討論的其實(shí)是項(xiàng)目經(jīng)過模塊化后的一種情況,如果沒有模塊化需求其實(shí)是無所謂的。如果項(xiàng)目已經(jīng)進(jìn)行了模塊化,推薦大家花幾分鐘看下。 需求 首先,我們來看一張常見的模塊化后的...
@yoyochoo 混淆這塊確實(shí)要注意,還有注冊其實(shí)是要手動(dòng)指明meta-data中的value的,無法做到自動(dòng)注冊,畢竟可能有多個(gè)服務(wù),除非對這個(gè)value做特殊限制,比如要求必須以“sp_”開頭,這樣我們就可以全自動(dòng)注冊。但這樣還有一個(gè)缺點(diǎn),如果開發(fā)人員一不小心在xml中指定的類出了錯(cuò)誤,我們無法及時(shí)發(fā)現(xiàn),只有在使用時(shí)才會crash,相當(dāng)于埋了雷。目前我的注冊是:public static void register(Context context, String metaDataValue, Class clz) ,這里強(qiáng)制要求傳入實(shí)現(xiàn)類的class,這樣可以做個(gè)檢查,防止出錯(cuò)。
Android模塊化中的服務(wù)發(fā)現(xiàn)機(jī)制前言 本文討論的其實(shí)是項(xiàng)目經(jīng)過模塊化后的一種情況,如果沒有模塊化需求其實(shí)是無所謂的。如果項(xiàng)目已經(jīng)進(jìn)行了模塊化,推薦大家花幾分鐘看下。 需求 首先,我們來看一張常見的模塊化后的...
@yoyochoo 哈哈,有幫助就好
Android模塊化中的服務(wù)發(fā)現(xiàn)機(jī)制前言 本文討論的其實(shí)是項(xiàng)目經(jīng)過模塊化后的一種情況,如果沒有模塊化需求其實(shí)是無所謂的。如果項(xiàng)目已經(jīng)進(jìn)行了模塊化,推薦大家花幾分鐘看下。 需求 首先,我們來看一張常見的模塊化后的...
我們都知道,Android是16ms刷新一幀,而通常我們所理解的刷新是“每個(gè)view的draw()方法被調(diào)用”,所以這里就有一個(gè)問題了,Android系統(tǒng)底層每隔16ms就發(fā)...
前言 在分析ConcurrentHashMap之前,希望大家先讀完HashMap的源碼,因?yàn)镃oncurrentHashMap基本算法和HashMap是一致的,只是增加了并發(fā)...