当前位置:   article > 正文

【Android】简单的接口回调_android系统 framework 实现回调接口给应用调用

android系统 framework 实现回调接口给应用调用
应用场景

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

下面的代码是从百度定位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
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
设计接口

需要在 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);
        }
    }
    
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
接口回调

调用这个工具类

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();
            }
        });
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/265130?site
推荐阅读
相关标签
  

闽ICP备14008679号