应用场景

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

下面的代码是从百度定位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();            }        });    }}

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

更多相关文章

  1. android 两个 activity 用 handler传递数据
  2. Android保存Serializable数据到本地
  3. Android通过HTTP协议实现上传文件数据
  4. Android一个ListView列表之中插入两种不同的数据
  5. Android 将数据库文件保存至sdcard中
  6. Android 发送JSON数据到服务端
  7. SQlite数据库(2)----android 操作

随机推荐

  1. 坚果云亿方云哪个更好用?
  2. redis-cluster集群总结
  3. 业务数据分析
  4. pyinstaller打包总结
  5. aipai服务架构
  6. 量化交易
  7. 关于分库分表后的数据统计异构方案
  8. 已安装nginx动态添加模块
  9. ce内存寻址基址
  10. h5图片展示和ajax上传