函数接口回调通俗易懂的理解

    接口回调通俗的理解就A找B谈事情,结果B有其他事情在处理,现在不方便和A谈事情,于是他们约定在B处理完其他事情之后去通知A,我这边现在有时间了,我们可以谈论事情了,这样处理的好处就是在B处理其他事情的时候,A不用一直等着B,A可以先去处理其他事情,等B通知A之后,A再来处理这个事情。

    这里面主要就是这个约定了,也就是函数回调里面定义的接口,下面我们看一下下面这个demo

public class MainActivity extends Activity {
    private Button mServerButton;
    private Button mClientButton;
    private ServerInterface mServerInterface;
    private TextView mShowTextView;
    private final int SLEEP_COMPLATE = 1;
    private final int NOTIFY_CLIENT = 2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        mServerButton = findViewById(R.id.server);
        mClientButton = findViewById(R.id.client);
        mShowTextView = findViewById(R.id.show_message);

        mServerButton.setEnabled(false);

        mClientButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getApplicationContext(),"您好!",Toast.LENGTH_LONG).show();
            }
        });
        setCallBack(new ServerInterface() {
            @Override
            public void notifyComplate() {
                mClientButton.setEnabled(true);
                mShowTextView.setText("Client已收到通知!");
            }
        });
        mMainHandler.sendEmptyMessageDelayed(SLEEP_COMPLATE,10000);
    }
    private Handler mMainHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case SLEEP_COMPLATE:
                    mShowTextView.setText("Server已休息好,开始工作");
                    mServerButton.setEnabled(true);
                    mMainHandler.sendEmptyMessageDelayed(NOTIFY_CLIENT,5000);
                    break;
                case NOTIFY_CLIENT:
                    mShowTextView.setText("Server已开始工作,有什么事情可以去找他");
                    mServerInterface.notifyComplate();
                    break;
                default:
                    break;
            }
        }
    };

    public void setCallBack(ServerInterface serverInterface) {
        mServerInterface = serverInterface;
    }
}

public interface ServerInterface {
    public void notifyComplate();
}

   上面这个demo可以理解为就是客户端有事情需要去找服务端,结果服务端需要休息,他们约定在服务端休息完成之后,服务端去通知客户端那边可以谈事情了,这个里面重点是需要去注册一下这个接口,实现这个接口里面的约定函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值