一个Demo带你理解Android接口回调机制

简介: 前言开发中,接口回调是我们经常用到的。接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。举个例子:A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A可以继续先做别的事情。

前言

开发中,接口回调是我们经常用到的。

接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。

举个例子:

A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A可以继续先做别的事情。

那么就只有当B解决完问题后告诉A问题解决了,A才可以能解决这个问题。

代码中比如最常用的:

一个Activity中给按钮一个接口回调方法,只有用户点击了这个按钮,告诉按钮被点击了,才会执行按钮接口回调的方法

Button btn = new Button(this);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                
            }
        });

那么下面通过一个Demo理解接口回调:

主线程开启一个异步任务,当异步任务接收到数据,则把数据用TextView显示出来

1、首先 我们需要定义一个接口,定义一个方法,参数为一个字符串:

package com.xqx.InterfaceDemo;
 
 public interface ChangeTitle {
     void onChangeTitle(String title);
 }

2、写一个异步任务,把接口作为构造方法参数,在doInBackground()方法中判断如果有数据,则接口回调

package com.xqx.InterfaceDemo;

import android.content.Context;
import android.os.AsyncTask;

public class MyTask extends AsyncTask<String,Void,String>{

    private ChangeTitle changeTitle;
    public MyTask(ChangeTitle changeTitle) {
        this.changeTitle = changeTitle;
    }

    @Override
    protected String doInBackground(String... strings) {
        if (strings[0]!=null){
            changeTitle.onChangeTitle(strings[0]);
        }
        return null;
    }
}

3、主Activity,给异步任务参数传this,即 接口回调方法在此类中执行,那么就需要实现ChangeTitle接口,重写接口中 onChangeTitle 方法

package com.xqx.InterfaceDemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity implements ChangeTitle {

    private TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.textView);
        new MyTask(this).execute("我是标题");
    }
  // 重写接口方法,执行相应操作
    @Override
    public void onChangeTitle(String title) {
        textView.setText(title);
    }
}

附录

Android高级技术大纲,以及系统进阶视频;

Android高级技术大纲

Android进阶系统资料视频

获取方式;

加Android进阶群;701740775。即可前往免费领取。免费备注一下csdn

相关文章
|
3月前
|
Linux Android开发
Android 正常运行所需的一系列 Linux 内核接口
Android 正常运行所需的一系列 Linux 内核接口
53 0
|
6月前
|
API Android开发 计算机视觉
视觉智能平台有android人脸识别拍照demo?
视觉智能平台有android人脸识别拍照demo么?
65 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
138 0
|
4月前
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
148 0
|
4月前
|
Android开发 容器
[Android]View的事件分发机制(源码解析)
[Android]View的事件分发机制(源码解析)
36 0
|
4月前
|
消息中间件 缓存 安全
android开发,使用kotlin学习消息机制Handler
android开发,使用kotlin学习消息机制Handler
78 0
|
4月前
|
安全 Android开发 Kotlin
android开发,使用kotlin学习Android权限机制
android开发,使用kotlin学习Android权限机制
35 0
|
4月前
|
XML Java API
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
39 0
|
4月前
|
XML Java 定位技术
Android Studio App开发之网络通信中使用GET方式调用HTTP接口的讲解及实战(附源码 超详细必看)
Android Studio App开发之网络通信中使用GET方式调用HTTP接口的讲解及实战(附源码 超详细必看)
56 0
|
5月前
|
IDE 网络安全 开发工具
安卓模拟器接口抓包教程
用uni-app开发安卓应用时,查看接口数据不能像在浏览器中可以直接通过network查看,只能借助抓包工具来抓包,还有一些线上应用我们也只能通过抓包来排查具体的问题
324 0