最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

okHttp異步請(qǐng)求與UI主線程同步的例子

2023-06-05 19:32 作者:便宜酒  | 我要投稿

需求:在搜索框輸入省或城市名字,調(diào)用網(wǎng)絡(luò)接口獲取其下的城市或區(qū)的id與名字,名字作為數(shù)據(jù)源加載到bottomsheetdialog里的聯(lián)想列表(一個(gè)recyclerview)上。調(diào)用網(wǎng)絡(luò)接口是一個(gè)異步操作,和UI的加載是同時(shí)進(jìn)行的,目的是為了防止請(qǐng)求失敗導(dǎo)致主線程阻塞。而正確邏輯應(yīng)當(dāng)是通過網(wǎng)絡(luò)接口獲取到非空數(shù)據(jù)源后,才開始初始化適配器。

解決辦法:在網(wǎng)絡(luò)請(qǐng)求成功的回調(diào)方法里初始化適配器。

【UI主線程內(nèi)容】

僅僅包括一個(gè)bottomsheetdialog的初始化和軟鍵盤搜索監(jiān)聽事件。這個(gè)監(jiān)聽事件是發(fā)起okHttp異步請(qǐng)求的,不要在它的后面加載需要網(wǎng)絡(luò)數(shù)據(jù)源的UI。

【okHttp請(qǐng)求方法】

基本步驟:實(shí)例化請(qǐng)求OkHttpClient,拼接URL,發(fā)起異步請(qǐng)求隊(duì)列,new一個(gè)回調(diào)

在回調(diào)里就可以使用runOnUIThread(?( )->{ }?)向主線程添加代碼塊,也就是初始化適配器的操作,并彈出bottomsheetdialog。

【補(bǔ)充】

【軟鍵盤隱藏方法】

【適配器的條目監(jiān)聽】

基本步驟:聲明監(jiān)聽,set方法,暴露接口,綁定視圖

本文出現(xiàn)了三個(gè)lambda表達(dá)式,依次是:

1.適配器里的setOnClickListenr(?v -> {}?) v代表?xiàng)l目視圖,代替的是

2.初始化條目監(jiān)聽里的onItemClickListener = position -> { },含義和上面一樣

3.線程同步里的runOnUiThread(()-> { }

【Gson的使用】

天氣預(yù)報(bào)的網(wǎng)絡(luò)數(shù)據(jù)量很大,而且Json字符串非常亂,要把這樣的Json手動(dòng)轉(zhuǎn)化為Java對(duì)象太繁瑣,于是引入Gson自動(dòng)序列化生成java對(duì)象或者反序列化。例如

而自動(dòng)生成的實(shí)體類的屬性名和字段名是完全相同的,開發(fā)框架會(huì)自動(dòng)幫我們映射。


okHttp異步請(qǐng)求與UI主線程同步的例子的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
高青县| 苍山县| 怀集县| 普洱| 乾安县| 孙吴县| 邯郸市| 蕲春县| 白山市| 凤山市| 元阳县| 任丘市| 新巴尔虎右旗| 保定市| 新宾| 屏南县| 奉节县| 阜新市| 天镇县| 分宜县| 赫章县| 昭苏县| 苏州市| 亚东县| 车险| 双鸭山市| 黄浦区| 黔西县| 山阴县| 黄骅市| 永州市| 岱山县| 竹溪县| 通州市| 呼伦贝尔市| 运城市| 高雄市| 江津市| 淮北市| 措勤县| 安庆市|