3 回答

TA貢獻(xiàn)57條經(jīng)驗(yàn) 獲得超82個(gè)贊
第一個(gè)問(wèn)題,不太理解你的意思。監(jiān)控這10s是什么意思,服務(wù)器返回?cái)?shù)據(jù)的快慢是和網(wǎng)絡(luò)有關(guān)了,快慢不定。如果想知道什么時(shí)候返回的數(shù)據(jù),當(dāng)數(shù)據(jù)返回后,callback有幾種狀態(tài),舉個(gè)栗子:onSuccess、onError、onFailed。這種情況返回時(shí)會(huì)調(diào)用這函數(shù)。
ListView這種需要一個(gè)adapter來(lái)控制,在重寫(xiě)getView方法中,可直接修改UI,例如給ImageView設(shè)置圖片。但是網(wǎng)絡(luò)請(qǐng)求屬于延時(shí)操作,不可以在這里設(shè)置。你可以開(kāi)子線程請(qǐng)求網(wǎng)絡(luò),在adapter中設(shè)置一個(gè)handler,網(wǎng)絡(luò)請(qǐng)求完成發(fā)消息通知handler(發(fā)的消息附帶圖片),最后再handler給imageView設(shè)置圖片
//adapter中的代碼 @Override public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{ ????…… ????//bitmap是網(wǎng)絡(luò)請(qǐng)求得到的圖片 ????Message?message?=?new?Message(); ????message.obj?=?bitmap;//message攜帶圖片 ????mHandler.sendMessage(message); ????…… } //handler中重寫(xiě)handleMessage方法 @Override public?void?handleMessage(Message?msg)?{ ????imageView.setImageBitmap((Bitmap)?msg.obj); }
3.*注意*,開(kāi)發(fā)一般不這樣寫(xiě),學(xué)習(xí)的時(shí)候可以這樣練習(xí)??梢栽囋嚨谌綀D片框架,一句話搞定,例如Picasso、Fresco等等。
【另外提一下】Handler應(yīng)該這樣寫(xiě)(新手如果看不懂的話,在網(wǎng)上多看看、查查吧)
private?MyHandler?mHandler?=?new?MyHandler(this); private?static?class?MyHandler?extends?Handler?{ ????private?final?WeakReference<MainActivity>?mActivity; ????public?MyHandler(MainActivity?activity)?{ ????????//對(duì)引用對(duì)象進(jìn)行弱引用,利于java垃圾回收機(jī)回收,防止引用對(duì)象(例如activity)被關(guān)閉后,在內(nèi)存中 ????????//仍然持有引用(例如有個(gè)10分鐘的延時(shí)消息),長(zhǎng)期占用內(nèi)存(activity屬于重量級(jí)組件,會(huì)占用很多內(nèi)存) ????????mActivity?=?new?WeakReference<>(activity); ????} ????@Override ????public?void?handleMessage(Message?msg)?{ ????????MainActivity?activity?=?mActivity.get(); ????????if?(activity?!=?null)?{ ???????????? ????????} ????} }
- 3 回答
- 1 關(guān)注
- 2356 瀏覽
添加回答
舉報(bào)