第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

網(wǎng)絡(luò)編程的最佳實(shí)踐

標(biāo)簽:
Java Android

也许你还没有发现,之前我们的写法其实是很有问题的。因为一个应用程序很可能会在许多地方都会使用到网络功能,而发送HTTP请求的代码基本都是相同的,如果我们每次都会编写一遍代码,发送HTTP请求的代码,这显然是非常差劲的做法。

通常情况下,我们都应该将这些通用的网络操作提取到一个公共的类里,并提供一个静态方法,当想要发起网络请求的时候,只需简单地调用一下这个方法即可。

还有一个重要的事情,为了解决线程堵塞的问题,只需要使用Java的回调机制就可以。

我们就来使用OkHttp来写一个带有回调机制的http请求。

package com.example.webviewapplication;

import okhttp3.OkHttpClient;
import okhttp3.Request;

public class HttpUtil {
    public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(address)
                .build();
        client.newCall(request).enqueue(callback);

    }
}

可以看到,sendOkHttpRequest()方法中有一个okhttp3.Callback参数,这个是OkHttp库中自带的一个回调接口,然后再client.newCall()之后没有像之前那样一直调用execute()方法,而是调用了一个enqueue()方法,并把okhttp3.Callback参数传入。OkHttp在enqueue()方法的内部已经帮我们开好了子线程,然后会在子线程中去执行HTTP请求,并将最终的请求结果回调到okhttp3.Callback当中。

那么,我们在调用sendOkHttpRequest()方法的时候就可以这样写:

HttpUtil.sendOkHttpRequest("http://www.baidu.com", new okhttp3.Callback() {
    @Override
    public void onFailure(@NotNull Call call, @NotNull IOException e) {
        Toast.makeText(MainActivity.this, "打开失败", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
          String responseData = response.body().string();
          showData(responseData);
    }
});

showData记得要用runUiOnThread,要不是显示不了在UI界面上的。

private void showData(final String responseData) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            txt.setText(responseData);
        }
    });
}

https://img1.sycdn.imooc.com//5f95643c0001c5ff04930718.jpg

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消