接口回調(diào)(可以用接口回調(diào)來(lái)實(shí)現(xiàn)線(xiàn)程之間數(shù)據(jù)傳遞)

代碼如下所示:

public class MainActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        textView = (TextView) findViewById(R.id.textView2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                HttpUtil.getResponse(new huidiao() {
                    @Override
                    public void onSuccess(final String s) {
                        Log.i("xinxi",s);
                       /* 輸出結(jié)果為:
                        <!DOCTYPE html>
                        <!--STATUS OK--><html> <head><meta h
                        ttp-equiv=content-type content=text/htm
                        l;charset=utf-8><meta http-equiv=X-UA-Compda class=mnav>貼吧</a> <noscript> <a href=h
                                > </p> <p id=cp>&copy;2017&nbsp;Baidu&n.......bsp;<a href=http://www.baidu.com/duty/
                        // >使用百度前必讀</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意見(jiàn)反饋<
                        // /a>&nbsp;京ICP證030173號(hào)&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div>
                        // </div> </body> </html>*/
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                textView.setText(s);
                            }
                        });
                    }

                    @Override
                    public void onFailure(Exception e) {

                    }
                });
            }
        });
    }
}

在HttpUtil.java文件中

public class HttpUtil {
    public static void getResponse(final huidiao huidiao){
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient okHttpClient = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("http://www.baidu.com")
                        .build();
                Response response = null;
                try {
                    response = okHttpClient.newCall(request).execute();
                    final String responsedata = response.body().string();//responsedata這個(gè)棧的地址指向了response.body().string()所在的堆的地址
                    huidiao.onSuccess(responsedata);//這一步將responsedata傳到了onSuccess方法中佛南,相當(dāng)于將MainActivity中的onSuccess方法中參數(shù)s指向了responsedata所指向的堆的地址
                } catch (IOException e) {
                    huidiao.onFailure(e);
                    e.printStackTrace();
                }
            }
        }).start();

    }
}

在huidiao.java文件中

public interface huidiao {
    void onSuccess(String s);
    void onFailure(Exception e);
}

再來(lái)一個(gè)例子荧呐,在okhttp中的接口回調(diào),可以進(jìn)行二者的對(duì)比

public class MainActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        textView = (TextView) findViewById(R.id.textView2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                HttpUtil.getResponse(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }

                    @Override
                    public void onResponse(Call call, final Response response) throws IOException {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    textView.setText(response.body().string());
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }
                        });
                    }
                });
            }
        });
    }
}

在HttpUtil.java文件中

public class HttpUtil {
    public static void getResponse(Callback callback){
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://www.baidu.com")
                .build();
        okHttpClient.newCall(request).enqueue(callback);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纵朋,更是在濱河造成了極大的恐慌笼痛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牺堰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡颅围,警方通過(guò)查閱死者的電腦和手機(jī)伟葫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)院促,“玉大人扒俯,你說(shuō)我怎么就攤上這事∫环瑁” “怎么了撼玄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)墩邀。 經(jīng)常有香客問(wèn)我掌猛,道長(zhǎng),這世上最難降的妖魔是什么眉睹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任荔茬,我火速辦了婚禮,結(jié)果婚禮上竹海,老公的妹妹穿的比我還像新娘慕蔚。我一直安慰自己,他們只是感情好斋配,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布孔飒。 她就那樣靜靜地躺著灌闺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坏瞄。 梳的紋絲不亂的頭發(fā)上桂对,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音鸠匀,去河邊找鬼蕉斜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缀棍,可吹牛的內(nèi)容都是我干的宅此。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼爬范,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼诽凌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起坦敌,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痢法,沒(méi)想到半個(gè)月后狱窘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡财搁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蘸炸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尖奔。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搭儒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出提茁,到底是詐尸還是另有隱情淹禾,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布茴扁,位于F島的核電站铃岔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏峭火。R本人自食惡果不足惜毁习,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卖丸。 院中可真熱鬧纺且,春花似錦、人聲如沸稍浆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恐仑,卻和暖如春泉坐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裳仆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工腕让, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歧斟。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓纯丸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親静袖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子觉鼻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,497評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法队橙,內(nèi)部類(lèi)的語(yǔ)法坠陈,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法捐康,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,581評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理仇矾,服務(wù)發(fā)現(xiàn),斷路器解总,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 七月買(mǎi)的書(shū)贮匕。下定決心要學(xué)好英語(yǔ)了。然后是瑜伽花枫。接著可能是化妝刻盐。 先將英語(yǔ)學(xué)好再說(shuō)。
    偉幾聲閱讀 176評(píng)論 0 0
  • 0521今天的作業(yè): 在你腦海里劳翰,印象深刻的故事有哪些敦锌?為什么你記住了它們,而忘記了其他的佳簸。 故事的巨大威力 1....
    馬克圖布了閱讀 192評(píng)論 0 0