日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

thread - Android 主線程更新UI問題

瀏覽:267日期:2024-08-20 15:52:30

問題描述

本人使用了OKGO的框架, 下載文件,在下載之前創(chuàng)建一個 等待框,在更新進度的回調(diào)中,更新等待框的百分比, 可是爆了如下錯誤!thread - Android 主線程更新UI問題

通過LOG 發(fā)現(xiàn) UI線程ID 不一樣

是什么問題? 求大神解決,以下是源碼~!

public void setDownloadUrl(String url) {if (TextUtils.isEmpty(url)) return;if (dialog == null) { dialog = new ProgressDialog(mainViewImpl.getContext()); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); dialog.setMessage('正在下載文件...'); dialog.setMax(100); dialog.setTitle('軟件更新');}dialog.show();L.i('(外)線程ID: ' + Thread.currentThread().getId());OkGo.get(url)//.tag(this)//.execute(new FileCallback() { //文件下載時,可以指定下載的文件目錄和文件名 @Override public void onSuccess(File file, Call call, Response response) {// file 即為文件數(shù)據(jù),文件保存在指定目錄L.i('成功: ');if (dialog != null && dialog.isShowing()) dialog.dismiss();startUpdate(file); } @Override public void downloadProgress(long currentSize, long totalSize, float progress, long networkSpeed) {//這里回調(diào)下載進度(該回調(diào)在主線程,可以直接更新ui)L.i('(內(nèi))線程ID: ' + Thread.currentThread().getId());dialog.setMessage('正在下載文件......' + (int) (progress * 100) + '%'); } @Override public void onError(Call call, Response response, Exception e) {super.onError(call, response, e);L.i('失敗: ');if (dialog != null && dialog.isShowing()) dialog.dismiss(); }}); }

問題解答

回答1:

你使用的是MVP架構(gòu),在Presenter中不應該操作View中的控件,而你在Presenter中操作了Dialog這個控件。所以正確的做法應該是下面的:

Interface View{ void showDialog(); void updateDialog(int count); void dismissDialog(); void showError(); void dismissError();}class Presenter{ View view; public Presenter(View view){ this.view=view; } public void setDownloadUrl(String url){ OkGo.get(url)// .tag(this)// .execute(new FileCallback() { //文件下載時,可以指定下載的文件目錄和文件名@Overridepublic void onSuccess(File file, Call call, Response response) { // file 即為文件數(shù)據(jù),文件保存在指定目錄 view.dismissDialog();} @Overridepublic void downloadProgress(long currentSize, long totalSize, float progress, long networkSpeed) { view.update((int)progress);} @Overridepublic void onError(Call call, Response response, Exception e) { super.onError(call, response, e); view.dismissDialog(); view.showError();} }); } } 回答2:

你已經(jīng)打印出downloadProgress()方法執(zhí)行的環(huán)境不是UI線程,那么你把

dialog.setMessage('正在下載文件......' + (int) (progress * 100) + '%');

的執(zhí)行放在UI線程就可以了.

runOnUiThread(new Runnable() { @Override public void run() {dialog.setMessage('正在下載文件......' + (int) (progress * 100) + '%'); }});

||-------------------------補充 -------------------------||

我剛剛也打印了log,在ui線程和子線程中:

03-03 15:20:54.592 30842-30842/com.didikee.commondependence E/test: Out-->ThreadName: main id: 103-03 15:20:54.592 30842-30891/com.didikee.commondependence E/test: Inner-->ThreadName: main id: 807

主線程的id是1,子線程的id是807,他們的名稱都是main,而線程的名稱是可以指定的:

public Thread(String name) {//這是指定線程名稱的構(gòu)造函數(shù)init(null, null, name, 0); }

而線程的id卻是內(nèi)部生成的,不可以手動指定,也就是說線程的名稱展示成什么并沒有說服力,id才是唯一,兩個id不一樣就不是同一線程,與主線程id不一樣那不一樣的那個就不是主線程,題主不知道糾結(jié)什么,可以去看Thread類的源碼:

tid = nextThreadID();....private static synchronized long nextThreadID() {return ++threadSeqNumber; }回答3:

下載任務執(zhí)行在UIThread將會阻塞界面,為了不影響應用體驗,我們都會在異步線程當中執(zhí)行下載任務,而異步線程中執(zhí)行的回調(diào)自然是在異步線程了。Android中最常用的線程通訊機制是Handler:

Handler mHandler = new Handler(Looper.getMyLooper()); handler.post(new Runnable(){@Overridevoid run(){//在這里更新ui就好了} })

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久成人网| 成午夜精品一区二区三区软件| 精品免费av在线| 精品一区二区三区中文字幕视频| 精品香蕉视频| 久久精品国产大片免费观看| 不卡中文字幕| 亚洲精品免费观看| 天堂日韩电影| 7777精品| 色老板在线视频一区二区| 红桃视频国产精品| 日韩欧美精品一区| 免费成人性网站| 日韩有码av| 日韩a一区二区| 亚洲专区欧美专区| 久久三级中文| 亚洲电影有码| 欧美一级二区| 久久中文视频| 国产精品久久久久久久久免费高清| 国产精品国产三级国产在线观看| 国产亚洲毛片| 涩涩av在线| 欧美成a人免费观看久久| 免费在线亚洲欧美| 精品一区av| 婷婷亚洲五月| 久久激五月天综合精品| 精品视频一区二区三区四区五区| 国产高潮在线| 一本一道久久a久久精品蜜桃| 91亚洲国产成人久久精品| 欧美va天堂| 久久精品999| 最新日韩av| 久久黄色影视| 国产一区二区三区视频在线| 视频一区在线视频| 在线亚洲人成| 日本欧美在线| 吉吉日韩欧美| 91精品国产乱码久久久久久久| 在线看片一区| 黄色网一区二区| 视频一区视频二区在线观看| 欧美日韩va| 影视先锋久久| 日本va欧美va欧美va精品| 国产模特精品视频久久久久| 久久久久久婷| 合欧美一区二区三区| 伊人久久大香线蕉av不卡| 久久影院一区二区三区| 六月丁香综合| 欧美中文字幕一区二区| 91麻豆精品激情在线观看最新| 婷婷综合激情| sm捆绑调教国产免费网站在线观看 | 欧美午夜不卡| 国产精品极品在线观看| 国产探花在线精品| 亚洲字幕久久| 国产欧洲在线| 日韩国产一区| 四虎国产精品免费观看| 国产精品毛片久久久| 伊人影院久久| 久久精品国产网站| 国语精品一区| 老牛国内精品亚洲成av人片| 玖玖玖国产精品| 尤物精品在线| 福利精品在线| 中文字幕在线看片| 国产成人免费av一区二区午夜| 免费日本视频一区| 国产一卡不卡| 成人在线超碰| 日韩中文字幕高清在线观看| 97人人精品| 免费亚洲一区| 136国产福利精品导航网址| 欧美午夜精品一区二区三区电影| 国产日本久久| 久久久久久婷| 色婷婷精品视频| 日韩av一级片| 韩国一区二区三区视频| 国产伊人久久| 日本免费久久| 久久亚洲国产精品一区二区| 免费欧美在线视频| 日本久久二区| 国产精品宾馆| 1024精品久久久久久久久| 蜜臀精品一区二区三区在线观看| 日本午夜精品久久久久| 国产精品视频一区视频二区| 日韩精品91| 88久久精品| 国产传媒av在线| 日韩一区二区三区精品视频第3页| 国产精品一区二区av日韩在线| 成人久久一区| 日本不卡视频在线| 91精品精品| 欧美黄色精品| 亚洲色诱最新| 麻豆理论在线观看| 日本亚洲三级在线| 日韩av自拍| 国产精品第一| 天堂精品久久久久| 97人人精品| 欧美视频久久| 亚洲激情偷拍| 日韩精品欧美| 欧美日韩一区二区国产| 免费视频最近日韩| 日韩网站中文字幕| 精品视频99| 激情不卡一区二区三区视频在线| 男女男精品网站| 亚洲经典在线| 国产精品普通话对白| 青青青免费在线视频| 国产精品magnet| 久久国产精品99国产| 久久不射网站| 五月婷婷亚洲| 蜜桃视频在线观看一区| 国模 一区 二区 三区| 91综合网人人| 日韩综合精品| 免费一区二区三区在线视频| 亚洲精品一区二区在线播放∴| 麻豆9191精品国产| 综合激情婷婷| 国产精品欧美一区二区三区不卡| 亚洲1区在线观看| 99久久www免费| 好看的亚洲午夜视频在线| 激情91久久| 日韩欧美在线中字| 成人看片网站| 欧美91精品| 日韩精品亚洲专区在线观看| 日本午夜精品视频在线观看| 久久国产精品久久久久久电车| 欧美+日本+国产+在线a∨观看| 欧美日韩一区二区综合| 黄毛片在线观看| 亚洲一区欧美二区| 亚洲毛片视频| 国产精品欧美日韩一区| 欧美激情另类| 亚洲香蕉网站| 欧美日韩伊人| 成人午夜国产| 国产精品人人爽人人做我的可爱| 欧美伊人影院| 欧美色图一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 偷拍亚洲精品| 亚洲四虎影院| 一二三区精品| 精品美女久久| 伊人久久大香伊蕉在人线观看热v| 国产精品网在线观看| 欧美激情另类| 欧美亚洲二区| 午夜精品网站| 人人精品久久| 亚洲www啪成人一区二区| 一本色道久久精品| 国产精品白丝一区二区三区| 久久人人99| 国产精品一区高清| 在线免费观看亚洲| 日韩一区二区三区免费播放| 不卡一区综合视频| 中文字幕人成乱码在线观看 | 日韩国产欧美在线视频| 中文字幕人成乱码在线观看| 91亚洲精品在看在线观看高清| 国产亚洲一区二区手机在线观看| 国产精品婷婷| 亚洲精品2区| 高清日韩中文字幕| 女人天堂亚洲aⅴ在线观看| 日韩久久视频| 日本一二区不卡| 91嫩草精品| 日韩国产91| 日韩精品第一| 亚洲一级二级| 99精品电影| 亚洲精品va|