【Android】简单的接口回调

应用场景

工具类封装
举个栗子:百度定位

下面的代码是从百度定位SDK中复制来组成的工具类

public class LocationTool {
    private Context context;
    public LocationClient mLocationClient = null;
    private mLocationListener myListener = new mLocationListener();
    
    public LocationTool(Context context){
        this.context = context;
        Init();
    }

    public void Init(){
        mLocationClient = new LocationClient(context);
        //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);
        //注册监听函数
        LocationClientOption option = new LocationClientOption();
        option.setIsNeedAddress(true);
        //可选,是否需要地址信息,默认为不需要,即参数为false
        //如果开发者需要获得当前点的地址信息,此处必须为true
        //option.setCoorType("gcj02");
        mLocationClient.setLocOption(option);
		//mLocationClient为第二步初始化过的LocationClient对象
		//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
		//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明
    }

    public class mLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation address) {
            	//todo
        }
    }
}
设计接口

需要在 mLocationListener 中获取数据,但这样的结构是没办法获取数据的
可以在 mLocationListener 中添加回调接口,进行操作

public class LocationTool {
	......
	......
	......
	/**
     * 新增一个自定义接口并new出来
     */
    public AddressListener addressListener;
    public interface AddressListener{
        void address(BDLocation position);  //确定处理的值
    }
    
    //设置getter和setter
     public AddressListener getAddressListener(){
        return addressNoListener;
    }

    public void setAddressListener(AddressListener addressListener) {
        mLocationClient.start();
        this.addressListener = addressListener;
    }
    
    //在mLocationListener 调用这个接口
    public class mLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation address) {
            	//todo
            	addressListener.address(address);
        }
    }
    
}
接口回调

调用这个工具类

public class HomePageActivity extends AppCompatActivity {

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);

        LocationTool tool = new LocationTool(getApplicationContext());
        tool.setAddressListener(new LocationTool.AddressListener() {
            @Override
            public void address(BDLocation position) {
            	//在这里获取数据
                lat = position.getLatitude();
                lng = position.getLongitude();
            }
        });
    }
}

带数据返回的接口回调大概就这样了
想要执行其他操作也是类似的原理

Android开发中,接口回调是一种常用的设计模式。它用于实现不同组件之间的通信和交互。接口回调的基本原理是,一个类(称为回调接口)定义了一些方法,其他类可以实现这些方法并注册到回调接口中。当某个事件触发时,回调接口调用注册的类的对应方法来处理事件。 在Android开发中,接口回调广泛应用于各种场景,比如点击事件的处理、网络请求的回调、异步任务的通知等。通过接口回调,我们可以将代码的逻辑分离,使得各个组件之间的耦合度降低,提高了代码的可维护性和扩展性。 举个例子来说,假设我们有一个按钮,当用户点击按钮时,我们希望执行一些特定的操作。这时,我们可以定义一个回调接口,比如OnClickListener,其中包含一个方法onClick。然后,我们可以在Activity中实现OnClickListener接口,并将其注册到按钮上。当用户点击按钮时,按钮会调用注册的OnClickListener的onClick方法,从而执行我们指定的操作。 因此,接口回调Android开发中非常重要的一部分,熟练掌握接口回调的使用可以提高代码的质量和开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [安卓开发之简单接口回调](https://blog.csdn.net/weixin_43885787/article/details/86604452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [详解Android接口回调、方法回调](https://blog.csdn.net/qq_31881469/article/details/80089675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值