官方解释: 接口回调是指:把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。
我的例子: 我在微信上跟女朋友求婚了。可是等半天她没来微信。于是我下楼去取快递去了,然后取完刚进门,发现她回微信说答应求婚了。我欣喜若狂。
** 看完例子感觉不耐烦的请看下面代码,并直接复制走吧。
----------------------------- WaitMessage.class 和 SendMessage.class --------------------------------------
1.首先在SendMessage.class 里定义一个接口:
public interface Propose{
void answer(String info);
}
2.用该接口名定义一个变量储存数据,并定义一个公共方法:
Propose propose;
public void response(Propose propose){
this.propose = propose;
}
3.要把发送的信息写进接口中的方法里(变量必须做非空判断):
if(null!=propose){
propose.answer("好吧,我嫁给你!");
}
4.WaitMessage.class 里实现上面SendMessage.class的接口Propose :
public class WaitMessage extends AppCompatActivity implements SendMessage.Propose {
@Override
public void answer(String info) {
}
}
5.WaitMessage.class 中的生命周期onCreate()里实例化SendMessage.class 这个类,并且调用公共方法response :
SendMessage sendMessage = new SendMessage();
sendMessage.response(this);
------------------------- SendMessage.class 完整代码 ------------------------------------------
/**
* 男朋友跟我求婚了,我考虑一会儿再回复他
*/
public class SendMessage {
Propose propose;
public interface Propose {
void answer(String info);
}
public void response(Propose propose) {
this.propose = propose;
}
public SendMessage() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(8000);
if (null != propose) {
propose.answer("好吧,我嫁给你!");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
//--------------------- WaitMessage.class 完整代码 -------------------------------------
/**
* 我跟女朋友求婚了,然后在等待回复,好心急
*/
public class WaitMessage extends AppCompatActivity implements SendMessage.Propose {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("嫁给我吧!");
SendMessage sendMessage = new SendMessage();
sendMessage.response(this);
}
/**
* 打印的是我收到信息后的想法
*/
@Override
public void answer(String info) {
switch (info){
case "滚!":
System.out.println("我想上吊!");
break;
case "着啥急?!":
System.out.println("我其实不着急,爸妈在着急!");
break;
case "好吧,我嫁给你!":
System.out.println("太开心了,哈哈!");
break;
}
}
}