亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中怎么使用callback函數?

java中怎么使用callback函數?

慕姐4208626 2019-02-06 11:07:12
java中怎么使用callback函數
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

 場景一:

復制代碼
Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new Button.OnClickListener() {

//回調函數
@override
publicvoid onClick(View v) {
buttonTextView.setText("按鈕被點擊了");
}
});
復制代碼
  上面的代碼給按鈕加了一個事件監聽器,這其實就是"回調"最常見的應用場景之一。我們自己不會顯示地去調用onClick方法。用戶觸發了該按鈕的點擊事件后,它會由Android系統來自動調用。

  場景二:

復制代碼
@Override
publicvoid onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
// You code...
}

@Override
publicvoid onResume() {
super.onResume();
// You code...
}
復制代碼
  上面的方法大家就更熟悉了,這是Android系統在Activity類中設置的回調函數,在Activity生命周期的不同階段,Android系統會自動調用相應的方法(onCreate, onPause, onResume,onDestroy等等)

  以上是兩個Android中用到"回調"的場景,他們的代碼實現可能不同,但是思想上是相近的,都是"回調"思想的體現。下面,我們在Java中分別模擬這兩個場景。

  首先模擬注冊事件監聽器。先寫一個監聽器接口

復制代碼
package com.listener;

/**
* 點擊監聽器接口
* @author CodingMyWorld
*
*/
publicinterface MyOnClickListener {
publicvoid onClick();
}
復制代碼
  然后寫一個我們自己的Button類

復制代碼
package com.listener;

publicclass MyButton {
private MyOnClickListener listener;

/**
* 設置具體點擊監聽器
* @param listener 點擊監聽器實現類
*/
publicvoid setOnClickListener(MyOnClickListener listener) {
this.listener = listener;
}

/**
* 按鈕被點擊
*/
publicvoid doClick() {
listener.onClick();
}
}
復制代碼
  最后模擬Client端的注冊監聽器和觸發點擊操作。

復制代碼
package com.listener;

publicclass Client {
publicstaticvoid main(String[] args) {
MyButton button =new MyButton();
//注冊監聽器
button.setOnClickListener(new MyOnClickListener() {

@Override
publicvoid onClick() {
System.out.println("按鈕被點擊了");

}

});
//模擬用戶點擊
button.doClick();
}
}
復制代碼
  以上就是"回調"思想在Java中事件監聽的運用,我們再模擬第二個場景,"回調"在activity生命周期方法調用的體現。由于比較簡單,我就不多做解釋了,大家直接看代碼。

復制代碼
package com.activity;

publicabstractclass Activity {
protectedvoid onCreate() {
System.out.println("創建準備~~~~~~~");
}

protectedvoid onDestroy() {
System.out.println("銷毀準備~~~~~~~~");
}
}
復制代碼
復制代碼
package com.activity;

publicclass ConcreteActivity extends Activity {
@Override
protectedvoid onCreate() {
super.onCreate();
System.out.println("創建中!?。?quot;);
}

@Override
protectedvoid onDestroy() {
super.onDestroy();
System.out.println("銷毀中?。?!");
}
}
復制代碼
復制代碼
package com.activity;

publicclass Client {
publicstaticvoid main(String[] args) {
Activity activity =new ConcreteActivity();
activity.onCreate();
activity.onDestroy();
}



查看完整回答
反對 回復 2019-03-17
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

1、定義連接工廠使用
2、定義回調函數的接口
3、定義使用回調函數的測試類

查看完整回答
反對 回復 2019-03-17
  • 3 回答
  • 0 關注
  • 611 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號