国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android回調與觀察者模式的實現原理

2019-10-23 18:30:54
字體:
來源:轉載
供稿:網友

回調與觀察者模式的實現原理:廢話不多說,直接上Demo回調的原理:

Android,回調,觀察者模式

Android,回調,觀察者模式

Android,回調,觀察者模式

Android,回調,觀察者模式

Android,回調,觀察者模式

觀察者模式:

A類中定義一個被觀察者畫家

package com.example.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.view.View;import java.util.ArrayList;/** * user: uidq0530 ,date: 2017-03-29. * description: * * @author xhunmon */public class A extends View {  private Paint mPaint;  public A(Context context) {    super(context);    mPaint = new Paint();  }  //1.進來的人給了一張座子  public interface OnAListener{    //可以看畫家繪制    void look();  }  //2.一個房間  private ArrayList<OnAListener> lists = new ArrayList<>();  //3.進入房間的通道  public void register(OnAListener listener){    lists.add(listener);  }  @Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    canvas.drawText("畫家畫畫", 50, 50, mPaint);    //4.只有房間的人能看畫家繪制    for(int i=0 ;i<lists.size(); i++){      lists.get(i).look();    }  }  //5.出去房間的通道  public void unregister(OnAListener listener){    if(lists.contains(listener))      lists.remove(listener);  }}

B類中是觀察者人,人可以有很多個,但是畫家只能有一個

package com.example.test3;import android.app.Activity;import android.os.Bundle;import android.widget.Toast;import com.example.view.A;/** * user: uidq0530 ,date: 2017-03-29. * description: * * @author xhunmon */public class B extends Activity {  private A.OnAListener mListener;  private A mA;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    mA = new A(this);    //1.創建一個人    mListener = new A.OnAListener() {      //3.當進入房間之后,人才能看到畫家繪制      @Override      public void look() {        Toast.makeText(B.this, "我注冊了,就可以監聽A中畫家是否在繪制了", Toast.LENGTH_SHORT).show();      }    };    //2.進入房間    mA.register(mListener);    setContentView(mA);  }  @Override  protected void onDestroy() {    super.onDestroy();    //4.出去房間    if(mListener != null)      mA.unregister(mListener);  }}

總結:最常見的觀察者是廣播,而觀察者的本質就是回調,所以實現觀察者的其實就是一堆回調。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥化市| 桂阳县| 稻城县| 濮阳县| 从化市| 噶尔县| 南京市| 壶关县| 抚州市| 炎陵县| 阜宁县| 临猗县| 马龙县| 永嘉县| 同江市| 乌拉特后旗| 万全县| 深水埗区| 青龙| 万荣县| 分宜县| 贡嘎县| 临安市| 景德镇市| 阜新| 纳雍县| 大庆市| 平阴县| 常熟市| 苗栗县| 徐闻县| 侯马市| 巴林左旗| 达孜县| 乃东县| 乌苏市| 颍上县| 南溪县| 潮州市| 林芝县| 桓仁|