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

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

举个例子:

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之接口回调机制

最新文章

  1. ubuntu16.04部署RED5流媒体服务器
  2. 《CSS权威指南》读书笔记
  3. SQL Server 2005中的CTE递归查询得到一棵树
  4. nginx日志切割脚本
  5. Xamarin Android教程Android基本知识版本介绍与系统介绍
  6. [转] 基于MySQL的秒杀核心设计(减库存部分)-防超卖与高并发
  7. DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常
  8. platanus
  9. leetcode 117 Populating Next Right Pointers in Each Node II ----- java
  10. 多控制器之UIApplication
  11. COJ 0015 20602铁轨
  12. c#后台弹出提示
  13. 基于 HTML5 Canvas 绘制的电信网络拓扑图
  14. Lesnoe Ozero 2017. BSUIR Open 2017
  15. 【Android基础】Fragment 详解之Fragment生命周期
  16. mac使用minikube
  17. Ipan笔记-2
  18. EGener2四则运算出题器
  19. H264 RTP封包原理(转载)
  20. 【LOJ】#2351. 「JOI 2017/2018 决赛」毒蛇越狱

热门文章

  1. DLX舞蹈链 hdu5046
  2. 【JavaScript】关于javascript原型的深入理解
  3. 【JavaScript】AJAX总结(异步JavaScript和XML)
  4. NPOI 教程 - 3.2 打印相关设置
  5. 调用百度地图Api实现的查看地图功能的小插件
  6. 对javascript this的理解
  7. Linux内核高端内存 转
  8. CGI,FastCGI,PHP-CGI与PHP-FPM(转)
  9. VS环境下搭建自己NuGet服务器
  10. Java再学习——深究static关键字