本篇算是心得、随笔主要记录几条与第三方对接时候的心得体会。
必须明确需求这算是一个很有道理的废话!!!不明白需求怎么开发呢?确实如此,目前手头的项目就是当初我们以为知道了需求(其实是犯了经验主义错误)然后直接进入开发,功能完成的也很快,三个星期左右出差进行项目对接。结果我们把打包好的apk提供给第三方,人家懵逼了,我也懵逼了。人家要sdk,而不是apk!!! 然后跟第三方进行会议沟通,最终确定我们把源码做成library提供给对方进行集成! 然而故事到这里就完了吗? 等做成lib正式进行项目集成的时候问题又出现了,第三方要求的是用类似悬浮界面的方式进行页面的交互(这个其实不怪我们,他们自己定交互方式的时候完全没有给我们进行通知),而我这边所有页面都是activity的方式,真是
对方要求换成他们要求的形式,但是这对我们来说代码改动有太大,项目又急着上线,于是经过敌我双方的“谈判,虽然最终还是以Activity的方式进行交货,但是就此项目而言从中也可以发现学点经验和教训。 1)给第三方开发东西,特别是要调用第三方的资源(比如播放器),必须明确知道是敌我双方哪个是主应用,哪个是辅应用。也就是说谁集成谁。目前是第三方集成我们的应用(UI)来使用。 2)既然是集成我们的页面,当然是由我们进行UI的开发,这个UI是Activity方式展现,还是以独立的View或者Fragmet等嵌入到对方的应用中,这个问题必须明确。 总之一定要明确需求,UI页面开发虽然相对简单,但是需求不明白,开发出来的东西没法用,那不是做无用功么?
Bundle存储集合问题在项目中用Bundle存储数据的时候,用了Vector来存储数据集合;但是经过测试发现从Bundle里面取这个Vector的时候会报类型转换错误: ArrayList can’t cast Vector!(也没有详细追查具体原因,当然本文也不会分析Vector和ArrayList的异同),所以把bundle保存的vector改成了ArrayList,一切ok!
ArrayList arrayList =
new ArrayList(Arrays.asList(new Program[soureList.size()]));
Collections.copy(arrayList, soureList);
outState.putSerializable("programList",arrayList);
在这里需要有一个注意的地方,在Collections.copy的时候,不能采用如下方式:
ArrayList arrayList =
new ArrayList();
Collections.copy(arrayList, soureList);
outState.putSerializable("programList",arrayList);
这样会报数组越界异常:因为arrayList是个空集合,size=0.而soureList.size()>0;从源码中也能看出报空指针异常的原因:
public static void copy(List
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?