
Fatal signal 11
错误H1
多个AsyncTask、Loader同时执行的时候,偶尔会闪退。 错误信息大致如下:
bash
@@@ ABORTING: INVALID HEAP ADDRESS IN dlfreeFatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
原因H1
Stackoverflow上有一个类型的问题,但是它的原因是在多个线程中调用了BluetoothSocket#close方法。回到自己的问题上来,我这边发生的问题也极有可能在网络操作方法,而不是异步任务本身。由于我的项目使用了spring android来对远程API进行请求操作的,所以最终问题定位到RestTempalte上。起初怀疑是使用的网络模块的问题,spring android可以使用apache httpclient、okhttp等作为http请求模块,但是逐一尝试还是解决不了问题。那问题只能出在RestTempalte本身了。Spring论坛上找到一个类似的问题,解决的办法是在RestTemplate初始化的代码上加上同步块,但是更为根本的原因还是不太清楚。
解决H1
我的项目是使用Roboguice来注入各种service供异步任务调用的,各个service对象注入的时候都会初始化RestTempalte。但是RestTempalte本身是线程安全的,所以所有的service使用同一个RestTempalte应该是没问题的。最终的修改就是service不再初始化RestTempalte,还是依赖注入一个容器中单例的RestTempalte。
评论
新的评论
上一篇
SwipeRefreshLayout
SwipeRefreshLayout 可以用于通过下滑的手势刷新View内容的情况。使用起来很简单,用SwipeRefreshLayout包裹需要刷新的View即可。 初始化View的Activity应该注册一个 OnRefreshListener 来处理手势完成时需要执行的(…
下一篇
同源策略
同源策略 Same-Origin Policy 根据 origin 限制浏览器通过脚本或者文档执行特定的动作。 origin 指的是URL的path之前的所有的部分(比如说, http://www.example.com )。对于一些动作,浏览器会比较origins,如果它们…
