proto一般都是后端定義好。 app里實(shí)現(xiàn)服務(wù)端干啥??,要是簡(jiǎn)單的server,可以了解一下SocketServer。
Android GRPC 最佳實(shí)踐Android Grpc 最佳實(shí)踐 前言:最近老聽(tīng)說(shuō)rpc,就知道可以代替之前的HTTP框架,像調(diào)用本地方法一樣請(qǐng)求接口,目前公司內(nèi)部很多部門(mén)也都接入了rpc,下面看一下An...
proto一般都是后端定義好。 app里實(shí)現(xiàn)服務(wù)端干啥??,要是簡(jiǎn)單的server,可以了解一下SocketServer。
Android GRPC 最佳實(shí)踐Android Grpc 最佳實(shí)踐 前言:最近老聽(tīng)說(shuō)rpc,就知道可以代替之前的HTTP框架,像調(diào)用本地方法一樣請(qǐng)求接口,目前公司內(nèi)部很多部門(mén)也都接入了rpc,下面看一下An...
不想看我的廢話,直接點(diǎn)擊[導(dǎo)航]王小二的技術(shù)棧站目錄[/p/42cf0c14f081] 前言 我是一個(gè)從2014年畢業(yè)到目前為止一直在Android領(lǐng)域工作的工程師,我想分享...
總結(jié)的太棒了,就是錘子 那里不夠詳細(xì),沒(méi)看懂
[009]SurfaceFlinger是什么東西前言 很多人都聽(tīng)過(guò)SurfaceFlinger,但是不清楚Surfaceflinger到底是一個(gè)什么東西,我接下來(lái)用直白的語(yǔ)言講述一下SurfaceFlinger,這里更多的...
前言 很多人都聽(tīng)過(guò)SurfaceFlinger,但是不清楚Surfaceflinger到底是一個(gè)什么東西,我接下來(lái)用直白的語(yǔ)言講述一下SurfaceFlinger,這里更多的...
此文只是自己學(xué)習(xí)記錄,很籠統(tǒng),沒(méi)學(xué)那么深,如有錯(cuò)誤還請(qǐng)指正 1. Android 多線程通信概述 Android 系統(tǒng)是基于 Linux 內(nèi)核的,Linux 已經(jīng)提供了管道、...
Activity 啟動(dòng)流程聽(tīng)起來(lái)非常復(fù)雜,但實(shí)際上很多東西我們沒(méi)必要完全掌握,只需要去大概理解原理和流程就行。 名詞解釋zygote 意思為受精卵 為所有進(jìn)程的父進(jìn)程 1. ...
四種啟動(dòng)模式 standard singleTop singleTask singleInstance 第一個(gè)沒(méi)什么好說(shuō)的第二個(gè) 如果Activity在棧頂,就不會(huì)創(chuàng)建新的 ...
通過(guò) Flag 設(shè)置啟動(dòng)模式,有謬誤的地方:
FLAG_ACTIVITY_NEW_TASK != SingleTask
應(yīng)該是:
FLAG_ACTIVITY_NEW_TASK + FLAG_ACTIVITY_CLEAR_TOP == SingleTask
而且如果單獨(dú)用 FLAG_ACTIVITY_CLEAR_TOP,如果 Manifest 是 standard,則目標(biāo) Activity 也會(huì)出棧,并重新走 onCreate() 方法,不走 onNewIntent() 方法。
public void postSticky(Object event) {
synchronized (stickyEvents) {
stickyEvents.put(event.getClass(), event);
}
// Should be posted after it is putted, in case the subscriber wants to remove immediately
post(event);
}
可以看一下源碼
第一個(gè)問(wèn)題:在調(diào)用postSticky 時(shí)先存起來(lái)一份,然后調(diào)用post,如果這時(shí)粘性事件的接收者已經(jīng)注冊(cè)了,那么就會(huì)馬上響應(yīng),如果還沒(méi)有注冊(cè),那么就引出第二個(gè)問(wèn)題:EventBus的 register -> subscribe方法中會(huì)遍歷當(dāng)前類(lèi)里的訂閱方法,如果監(jiān)聽(tīng)的是粘性事件,則去stickyEvents中尋找,如果匹配了就直接調(diào)用。
源碼碼基于3.1.1版本。
EventBus的粘性事件原理雖然EventBus現(xiàn)在有點(diǎn)過(guò)時(shí)了,但是其蘊(yùn)含的思想還是很值得我們?nèi)W(xué)習(xí)的。 個(gè)人認(rèn)為EventBus的魅力在于避免了回調(diào)帶來(lái)的接口爆炸,今天來(lái)看一下EventBus的粘性事...
和所有響應(yīng)式UI框架一樣,Compose 也是使用State來(lái)更新UI的 我們通常都是用下面的結(jié)構(gòu)來(lái)開(kāi)發(fā): 這種方式就是典型的命令式編程,想要改變UI就必須得調(diào)用更新UI的方...
by 就是Kotlin 幫我們實(shí)現(xiàn)代理模式的捷徑。by可以實(shí)現(xiàn)兩種代理,一種是接口代理,一種是屬性代理。 首先看接口代理 接口代理和我們?cè)趈ava中使用的代理是一個(gè)東西,即在...
Android Grpc 最佳實(shí)踐 前言:最近老聽(tīng)說(shuō)rpc,就知道可以代替之前的HTTP框架,像調(diào)用本地方法一樣請(qǐng)求接口,目前公司內(nèi)部很多部門(mén)也都接入了rpc,下面看一下An...
最近新開(kāi)發(fā)了個(gè)APP,申請(qǐng)了新的微信應(yīng)用。 對(duì)于Android 應(yīng)用來(lái)說(shuō) 比重要的有兩個(gè)參數(shù): 一個(gè)是 ,這個(gè)大家都非常熟悉,注意不要寫(xiě)錯(cuò)了, 另外一個(gè)比較關(guān)鍵了,就是 ,這...
最近,看見(jiàn)一篇RecyclerView 的回收復(fù)用機(jī)制的文章,也很理解這篇文章,所以暫且存下來(lái)。 開(kāi)始 最近在研究 RecyclerView 的回收復(fù)用機(jī)制,順便記錄一下。我...
public final void registerContentObserver(@NonNull Uri uri, boolean notifyForDescendants,
@NonNull ContentObserver observer) 第二個(gè)參數(shù) 傳 true 應(yīng)該可以
Android 截屏監(jiān)聽(tīng)(截圖分享功能實(shí)現(xiàn))By 吳思博 20180428 1. 背景 : 具體來(lái)說(shuō)就是,檢測(cè)到了用戶(hù)在應(yīng)用內(nèi)有截圖,彈出一個(gè)分享界面, 在截圖下方添加一個(gè)二維碼,進(jìn)行分享。 先展示下效果圖 2...
Navigation使用方法 1. 創(chuàng)建navigation 首先在我們Module下的res 右鍵,創(chuàng)建Android Resource Directory,選擇navig...
Android SDK中怎么打入本地aar 文件 折騰了一下午,答案就是 怎么都打不進(jìn)去 如果你用這種引入方式(這種感覺(jué)就是錯(cuò)的,我也不知道之前為啥這樣引入): 那么恭喜你,...
牛牛牛
Android Q(10) ContentObserver 不回調(diào) onChangeApp 里有本地相冊(cè)功能,需要通過(guò) ContentObserver 監(jiān)聽(tīng)系統(tǒng)數(shù)據(jù)庫(kù)變化,從而保證系統(tǒng)相冊(cè)有數(shù)據(jù)更新時(shí),App 相冊(cè)能及時(shí)更新,但最近報(bào)出某些機(jī)型用相機(jī)拍照回到...