最近几天Android开发遇到的问题

最近开发一个和NBA相关的软件,遇到了一些问题,在此做个记录,以备后查。


1. 网络问题

01-07 08:56:53.106: E/AndroidRuntime(676): FATAL EXCEPTION: main 

01-07 08:56:53.106: E/AndroidRuntime(676): android.os.NetworkOnMainThreadException 


据说Android版本在4.0之后,如果在UI主线程中处理http请求都会出现这个错误,所以,开一个新线程来访问http吧


2. UI显示问题

01-07 20:30:30.770: E/AndroidRuntime(16754): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 

UI显示与刷新只能在主UI线程中,放在子线程中会出现这个问题。


3. String为空

当定义的string 为 null的时候,不能用indexof判断,会报错


4. 解析网络的jsoup

对网络编程完全没概念,但是学jsoup解析倒是上手挺快,至少自己用的功能都摸索着实现了。


5. 关于layout

   android:layout_***       表明的是子控件在父控件中的相对位置

   android:gravity             表明子控件的内容在子控件中的相对位置


6. 关于屏幕适配

屏幕适配其实说穿了也就是决定,对于不同的设备,你的dp或sp到底设置多少?

在屏幕适配的过程中,其实有两个变量:

第1,屏幕的密度。

Dpi是映射到屏幕上的单位,与像素Pixel的关系如下:Dpi = k * Pixel

其中K是系数,根据屏幕不同,k也不同

ldpi :k = 0.75

mdpi :k = 1

hdpi :k = 1.5

xhdpi :k = 2

在编程的时候需要对这些有了解。

第2, 屏幕的大小。

 也是下了点功夫,上京东搜了所有热门品牌做了一个屏幕尺寸的统计,不是很全

主要的屏幕大小还是集中在480*800, 480*854, 540*960, 720 * 1280

关于屏幕密度和屏幕大小两者之间的关系,网上找到的图如下


适配路漫漫啊。。。


7. onclick和ontouch并发的问题

在listview上增加了左右滑动切换的功能才碰到的。

listview本身的点击采用onItemClickListener实现,左右滑动采用onTouch检测。

实现的时候没有怎么注意细节,后来调试的时候发现:左右滑动listviw时候,很容易就onclick了,也就是ontouch结束了还是触发了onclick

网上查到了一些信息,很有用:http://blog.csdn.net/daodaowolf/article/details/8247516

关键的是其中一句:

如果在Touch事件的down action的时候返回false,则表示这个组件不会吃掉这个down event,并且对touch的后续动作都不感兴趣。那么整个touch的动作,从一开始刚点击下去的时候,你就不会再被回调到了。


8. 关于sleep

sleep放在那里,就让哪里的线程sleep

如果放在子线程,那就是子线程中;

如果你放在了主线程中,那么整个UI主线程会停止,在sleep的过程中,UI会停止变化,一般不要在主线程中sleep


9. 编程的时候逻辑一定要清晰

最近在思考,是不是编程的时候基本上都可以按三条线来实现

一条是UI线:主要是UI显示,UI更新等等

一条是数据线:数据获取、存储、调用、更新等等

一条是命令线:主要是各种用户触发等等

一个流程包括三条线,这样逻辑会不会清楚一点?


10. 以前写程序,问题解决了从来不总结,之后遇到问题就回忆半天,很累,以后还是多记录一些吧


11. 欢迎球迷朋友们下载我的PalmNBA,下载链接 http://www.appchina.com/app/com.snaillabs.palmnba/


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值