官方解释: 接口回调是指:把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。
我的例子: 我在微信上跟女朋友求婚了。可是等半天她没来微信。于是我下楼去取快递去了,然后取完刚进门,发现她回微信说答应求婚了。我欣喜若狂。
** 看完例子感觉不耐烦的请看下面代码,并直接复制走吧。
----------------------------- 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; } } }