日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android回调的简单理解

發布時間:2024/9/21 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android回调的简单理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是回調

回調的定義是在A類中定義了一個方法,這個方法中用到了一個接口和該接口中的抽象方法,但是抽象方法沒有具體的實現,需要B類去實現,B類實現該方法后,它本身不會去調用該方法,而是傳遞給A類,供A類去調用,這種機制就稱為回調,這個定義比較正式,但看起來太繞了,一會A類一會B類,把人繞暈了。

使用日常生活中的例子來理解一下,回調英文單詞是Callback,直譯為回呼或者回電話,那就用跟電話有關作為例子吧,假設一個客戶(客戶是公司A的員工)問你(你是公司B的員工)一個問題,例如如何賺大錢,但這個問題你當場不能給出答案,以免顯得很草率,這個時候你可以跟客戶說,稍等一下,等確認后再給您回個電話,這樣就可以掛了電話,想一下應該怎么回復客戶,等有了答案后,再給客戶回電話。這個過程使用到了回調機制。

再回頭來理解回調函數的定義,客戶就是A類,你是B類,而接口呢,指的是電話,接口的抽象方法,就是客戶咨詢你的問題的過程,確認問題這個過程當然得由你去實現,你實現之后(確定問題答案之后),再給客戶回電話,完成回調過程。

2.為什么用回調

從打電話的例子可以看到回調的好處,分別是:
1.異步處理問題
如果不采用回調機制,客戶需要一直在干等你的答案,你找答案的過程中,他啥也干不了,而采用回調方式后,客戶不需要一直在電話前等回復,可以先忙自己的事去。在程序中,例如執行一個耗時的下載任務,最優的處理方式采用異步方式,即主程序啟動下載后可以忙別的,下載程序執行完下載后告知主程序就行,這是異步處理帶來的好處。

2.同一個事件有不同的處理方法
還是用客戶打電話咨詢問題的例子。當我們確認好問題要回客戶的問題時,可以由你自己親自回復,也可以由其他同事代回復,只要完成回復客戶的約定即可。注意到回調定義中提到接口中的抽象方法,實現抽象方法方式多種多樣,只要重寫這個抽象方法就行。

3.代碼例子

1.首先定義一個接口和抽象方法,如下:

//定義回調接口 public interface PhoneCallback{void Counseling(); }

2.定義一個公司A的類,在該類中實現對接口的調用

public class CompanyA {private PhoneCallback callBack;public CompanyA(){}public String Work(PhoneCallback callBack){//調用接口的抽象方法String answer= callBack.Counseling();return answer;} }

3.定義一個公司B的類,在該類中實現接口的抽象方法,也就是確定好答案回復客戶的咨詢

public class CompanyB implements PhoneCallback {//重寫抽象方法@Overridepublic String Counseling() {String answer="公司B的答復:這個問題建議您咨詢有關部門";return answer;} }

4.用界面展示以上的過程。其實以上已經完成了回調,這一步是用界面展示一下整個流程以及最終結果。

4.1 界面布局。布局很簡單,一個Button按鈕用于公司發起咨詢和一個TextView展示結果。

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/tvResult"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/bCompany"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="27dp"android:layout_marginTop="32dp"android:text="公司A發起咨詢"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

4.2 主界面MainActivity代碼

import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;public class MainActivity extends AppCompatActivity {Button bCommpanyA;TextView tvResult;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bCommpanyA=findViewById(R.id.bCompany);tvResult=findViewById(R.id.tvResult);bCommpanyA.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {CompanyA cA=new CompanyA();CompanyB cB=new CompanyB();String answer= cA.Work(cB);tvResult.setText(answer);}});} }

4.3 結果展示,點擊按鈕后,TextView控件展示了公司B的回復

5.總結

理解回調的過程,關鍵需要捋清楚其中的關系,首先回調肯定涉及到多方(多個類)之間互動,例子中是公司A和公司B,其實還可以有公司C,D等加入,而他們之間溝通的媒介是接口(Interface)和抽象方法,接口相當于現實生活中電話,抽象方法相當于打電話咨詢如何賺大錢,公司A可以咨詢公司B如何賺大錢,也可以咨詢公司C和公司D等如何賺大錢,而具體怎么回復,看各個公司想如何回復了,等他們想好了怎么回復,拿起電話打給公司A。關系捋清楚,已經算基本理解回調了。

總結

以上是生活随笔為你收集整理的Android回调的简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。