项目场景:
在主界面选择后设备后,通过intent传递坐标参数(传递的是一个bean类,类中包含经纬度),在下一个界面调用地图api定位该设备并显示。
问题描述:
用intent添加相应的信息后,点击跳转按钮后,界面不产生跳转效果,停留在主界面,而另外一个逻辑相同的模块则正常跳转。
主界面中传递数据并跳转的代码:
Intent intent = new Intent();
intent.setClass(mContext,GaodeMapActivity.class);
intent.putExtra("beanlist", (Serializable) beanlist);
startActivity(intent);
下个界面中接收信息的代码:
beanlist=(ArrayList<LujingDuojingNameBean>)getIntent().getSerializableExtra("beanlist");
原因分析:
首先我先判断了跳转的代码是否有执行,确实是有执行的。然后给另外一个控件添加了点击事件和跳转代码,同样不能跳转,说明问题应该出在那4行代码上面。最终调试后问题定位在了这一行代码:
intent.putExtra("beanlist", (Serializable) beanlist);
调试中编译器报错:!!! FAILED BINDER TRANSACTION !!!
上网查询了一下后发现可能传递的参数太大的结果,intent传递的数据不能超过40kb大小。
解决方案:
我马上查看了一下这个beanlist的大小,发现有6000多行数据,应该是没做删减的结果,把不需要的bean从beanlist里面清除掉就正常跳转了。