/**
* 通过Intent传递或者返回的数据是存放在一个叫做Binder transaction buffer的缓存区,这个缓冲区的大小为1Mb(Android 28 Platform),当缓冲区不够用时就会抛出异常
* 如果有多个数据传递同时进行,是共用缓冲区的1Mb,而不是每一个传输各分配1Mb缓存。这就有可能当多个传输同时进行时,数据大小小于1M还是抛出TransactionTooLargeException异常
* 建议的解决方法就是尽可能减小传输的数据,至于具体要多效合上也没个具体的数值,也不可能知道,因为并发传输的数量不固定,但是至少可以肯定的是超过1M肯定会抛异常
*
* 解决方法
* 根据官方的建议就是减小传输的数据大小,或者拆分数据分次传输,但是如果数据量真的很大且需一次性传输有没解决方法呢,当然有
*
* 数据保存到static全局变量中
*
* 数据保存到本地存储中,比如本地文件或数据库,在目标Activity中再提取出来
*
* 通过EventBus.postSticky传递包含传递数据的粘性事件,在目标Activity中接收该事件提取数据
*/
//在第一个activity中:EventBus.getDefault().register(this);String listBeansJson = new Gson().toJson(list);List<NewPublicPaintingDetailBean> detailBeans = new Gson().fromJson(listBeansJson, new TypeToken<List<NewPublicPaintingDetailBean>>() {}.getType());EventBus.getDefault().postSticky(detailBeans);@Overridepublic void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}=================分割线=================//第二个activity中接收数据:
EventBus.getDefault().register(this);//通过EventBus监听数据变化 获取数据@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)public void getPaintingDetailListData(List<NewPublicPaintingDetailBean> detailBeans){paintingDetailBeanList = detailBeans;
// coverAdapter.notifyDataSetChanged();publicPaintingFullViewPagerAdapter = new PublicPaintingFullViewPagerAdapter();List<PublicPaintingFullView> fullViews = new ArrayList<>();if(paintingDetailBeanList!=null){for (NewPublicPaintingDetailBean listBean : paintingDetailBeanList){PublicPaintingFullView publicPaintingFullView = new PublicPaintingFullView(NewPaintingDetailPageActivity.this);publicPaintingFullView.setOnPublicPaintingFullViewListener(this);publicPaintingFullView.setData(listBean);fullViews.add(publicPaintingFullView);}publicPaintingFullViewPagerAdapter.setPaintingListModels(fullViews);view_pager_fullview.setAdapter(publicPaintingFullViewPagerAdapter);view_pager_fullview.setCurrentItem(showPosition);}}@Overrideprotected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}