应用场景
工具类封装
举个栗子:百度定位
下面的代码是从百度定位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();
}
});
}
}
带数据返回的接口回调大概就这样了
想要执行其他操作也是类似的原理