关于百度地图SDK联网初始化的一个坑

来源:互联网 发布:小明看看地址永久域名 编辑:程序博客网 时间:2024/05/18 11:26

转载请注明出处:http://blog.csdn.net/u010724819/article/details/50859184

今天我在写百度地图线路规划相关的一个Demo之时,遇到了一个神奇的现象:第一次进入App的时候显示不了线路规划,第二次进入的时候却可以正常显示路线的规划。第一次进入的时候,返回的错误码是:SearchResult.ERRORNO.PERMISSION_UNFINISHED。看到这里,我的第一反应是初始化过程中,授权出了问题,立马加上了一个动态广播接收者:

class MyBroadCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();if (action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {Toast.makeText(getApplicationContext(), "wangluocuowu", 0).show();} else if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {Toast.makeText(getApplicationContext(), "quanxianshibai", 0).show();}}}


然而也没有弹出任何土司。

这就奇了怪了,难道最近没有积攒人品???(PS:过几天一定去扶老奶奶过

路)

接着,我下载了官方的Demo,发现没有任何异样,调取方式没有任何问题。偶然的一次机会,我先按下back键,返回到desktop,接着再次进入APP,奇迹发生了,路线显示了出来,总算是松了一口气。。。定下心来,泡杯咖啡,感觉时间也不早了,吃完饭随便看了看官方的教程,注意到一句话:

注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中

开始也没注意,结合这段时间自己遇到的一堆异步导致的NullPointerException(最终都用AsyncTask和Handler解决啦^_^),突然想到:“会不会是验证网络走的是子线程(废话,不走子线程就很容易ANR),从而导致线路规划产生了异步问题???”,然后,我在主界面加上了一个Button,等完全进入界面之后,点击Button进行线路规划,此时,我老泪纵横,终于可以正常访问了,此时,我才感觉到官方的用心良苦啊!!!(都用红色标记出来了,我竟然没有注意..........)

我想说:“百度 的工程师也可以考虑下给SDKInitializer.initialize(Context context),暴露个回调接口,类似于onInitializerFinished(),让大家知道下已经成功授权了再继续进行下一步的操作吧???官方Demo中直接是在第一页的listview中setadapter()之前进行了相关初始化,所以也就不可能出现这个问题了,倒是坑了我们,大半天时间就这么没了。。。”

为了避免大家再次入坑,遂分享!加油,分享是一种境界,成功是一种状态。


0 0
原创粉丝点击