开发中遇到的问题

fragment切换 而新建了一个antivity 内存泄漏
pdfview 打包apk大了6M左右 pdfviewpager

状态栏消失,还有可能是主题设置放在了setConventView的后面

ScrollView can host only one direct child

一、删除android ScrollView边界阴影方法方法
1) 在xml中添加:android:fadingEdge=”none”
2) 代码中添加:ScrollView.setHorizontalFadingEdgeEnabled(false);

二、删除ScrollView拉到尽头(顶部、底部),然后继续拉出现的阴影效果
适用于2.3及以上的 否则不用设置
android:overScrollMode=“never”

#Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递?

Bundle内部是由ArrayMap实现的,ArrayMap的内部实现是两个数组,一个int数组是存储对象数据对应下标,一个对象数组保存key和value,
内部使用二分法对key进行排序,所以在添加、删除、查找数据的时候,都会使用二分法查找,只适合于小数据量操作,
如果在数据量比较大的情况下,那么它的性能将退化。而HashMap内部则是数组+链表结构,所以在数据量较少的时候,
HashMap的Entry Array比ArrayMap占用更多的内存。因为使用Bundle的场景大多数为小数据量,我没见过在两个Activity之间传递10个以上数据的场景,
所以相比之下,在这种情况下使用ArrayMap保存数据,在操作速度和内存占用上都具有优势,因此使用Bundle来传递数据,可以保证更快的速度和更少的内存占用。
另外一个原因,则是在Android中如果使用Intent来携带数据的话,需要数据是基本类型或者是可序列化类型,HashMap使用Serializable进行序列化,
而Bundle则是使用Parcelable进行序列化。而在Android平台中,更推荐使用Parcelable实现序列化,虽然写法复杂,但是开销更小,所以为了更加快速的
进行数据的序列化和反序列化,系统封装了Bundle类,方便我们进行数据的传输。

内存调优

  • 使用dumpsys 查看内存占用详细情况。
  • 使用strict mode检测泄露的acitvity,没有关闭的cursor等。
  • 使用 mat 工具查看具体泄露情况,处理内存泄露问题。
  • 有些内存泄露是由Android系统造成。ExpandableListView被inputmanager占用,没有释放。WebView 被占用没有释放。此等内存泄露定位后,需要找到开放的API去释放资源。

要说Android开发难点,Android程序员都会有一肚子的话要说,咱们一个一个说,由低到高。
技术层面:
1 代码。这个看个人了,代码的好坏决定着未来。
2适配。代码写好了,能够跑了,但是却发现长期以来被痛骂的适配问题,各种机型,国内的水真深,要适应不同厂商真难。后来突然想为什么android适配
不能像前端一样,许多前端都不知道什么叫适配,百分比适配。后来我们试着按着这个思路做出了一套Android适配的方案,但是对有强迫症的程序员来说
看到还有机型没有良好适配真的是醉了,更有开发过程中偶尔出现某个解决方案对某个版本的os可行,但对于某个版本的os不可行这种莫名其妙的问题。
其实有些大神说的很对,就应该向苹果学习,这个 我们兼容太多旧版本反而助长了这股气,索性全部放弃一部分(现在都7.0了,还有人2.2,这是什么?
从5.0开始吧!!!),你看马上兼容的问题就解决一大部分。
3 维护。跟上文的最后一个意思,Android系统的更新总是很快,而且不总是向后兼容的,所以设计一个程序并不难,如何让他适应不同版本的os是有难度的。
4高效。跟第一个类似,写出来运行很容易,但如果让其高效还是要下功夫的。Android开发跟所有的应用开发同理,底层和框架如何更好的设计及优化已使用
业务的高速增长。,说起来容易,低耦合高扩展,做起来是需要长期经验积累。
5 优化。App端优化,这是个没有止境的话题,网络,图片动画内存电量等等随着优化的加深,你会发现不能局限在客户端,服务端也需要深入。(这个我深有
同感,跟服务器端交流,他们老是觉得你们app不就是搞个前端吗?有什么难的,我说api接口有什么难的,我学会了都用不着你了)。
客观条件
1 首先学起来,开发文档等等各种被墙,我表示php的文档在网上能轻易的找到。。。Android可能有版本,英文的,中文翻译的,你懂得。翻墙是所有软件开发
人员的求生技能。这就能看到,韩国的高新技术,台湾的技术水平提高的如此之快跟这个有很大关系。
2 有时是不是感觉不是你该做的工作却分给你了,我纵使有很大能耐,设计出良好的交互界面,搭配的很丑的图片我能怎么做,ps大法又成了必备技能,没事,
技多不压身。我靠。
3 开发的首要是用户体验,功能上少点可以一点一点迭代(微信也可以),在国内程序员没日没夜的加班,做出产品(外包),
我滴个去,进去先不说界面丑,再者不流畅,更可恨的是左边一个广告,右边一个广告,拜托你,我只是想快速想找到我想要的。
4 技术发展。我们的技术都是从外国流过来的?这个我不知道,不过从国内发展来看,大部分的公司都没把新技术研发放在心上,money是首要的,
以挣钱为首要目的的公司不可能走远。
5沟通。这是程序员最难的问题,要与产品,设计,老板打交道。他们只会提问题,甚至不懂技术的老板看到业务哪里出问题,开口就骂。
产品的意见不统一,一个向东一个向西,把程序员在中间当猴耍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值