android函数回调机制,android中回调函数机制完全解析

回调函数通俗讲,就是为了一些自己写的,用给别人来调用的函数。

我还看到一些其他人写的定义:所谓回调,就是对象A调用另一对象B中的某个方法b,然后B又在某个时候反过来调用A中的某个函数c,对于B来说,这个c便叫做回调函数。回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口。

一、最简单的回调函数

1.在要调用的业务操作中,创建一个接口,在接口中创建方法,这个方法表示的是我们原先要在业务类中执行的操作

注意:接口中的方法都没有实现体

public interface BackUpSmsListener {

/**

* 设置总进度

*

* @param max

*/

public void max(int max);

/**

* 设置当前进度

*

* @param progress

*/

public void progress(int progress);

}

2.将接口以参数的形式传递给业务方法,并在业务方法中,执行接口中的方法,将获取的值设置到接口方法中

public static void getAllSMS(Context context,BackUpSmsListener listener){

listener.max(count);

listener.progress(progress);

}

3.在activity中调用业务方法,创建一个接口,并实现接口中的方法,同时在接口的方法中就可以获取我们想要的数据

new Thread(){

public void run() {

SmsEngine.getAllSMS(getApplicationContext(),new BackUpSmsListener() {

@Override

public void progress(int progress) {

//progressDialog.setProgress(progress);

pb_atool_sms.setProgress(progress);

}

@Override

public void max(int max) {

//progressDialog.setMax(max);

pb_atool_sms.setMax(max);

}

});

//progressDialog.dismiss();

};

}.start();

二、项目开发 回调函数 情景一  在ViewPager中创建接口

1.创建一个接口,在接口中创建方法(RollViewPager是一个ViewPager页面)

package com.example.rollview;

import android.content.Context;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.View;

import android.view.ViewGroup;

public class RollViewPager extends ViewPager{

public RollViewPager(Context context) {

super(context);

}

/**

* 滚动方法

*/

public void roll() {

onViewClickListener.OnViewClick(url); // 在业务逻辑的地方,通过接口实现对象调用相应的方法

}

// RollViewPager 中的业务操作省略...

// .

// .

// .

/**

* 图片点击的接口

*/

public interface OnViewClickListener{

/**

* 点击的方法

*/

public void OnViewClick(String url);

}

public OnViewClickListener onViewClickListener;

/**

* 提供接口的方法

*/

public void setOnViewClickListener(OnViewClickListener onViewClickListener){

this.onViewClickListener = onViewClickListener;

}

}

2.设置回调监听,创建一个接口,并实现接口中的方法

package com.example.rollview;

import com.example.rollview.RollViewPager.OnViewClickListener;

public class ItemPager {

private void processData() {

RollViewPager rollViewPager = new RollViewPager();

rollViewPager.setOnViewClickListener(new OnViewClickListener() {

@Override

public void OnViewClick(String url) {

// 点击的方法

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值