【转载】Android 常见bug以及其处理

1.IllegalArgumentExceptionView not attached to window manager 窗体泄漏:解决方法,需要将UI控件定义在Activity中,当Activity被干掉时,要保证控件先被干掉。

2.从UI线程传递到其它线程的控件应该是初使化后的对象,因为UI线程会创建销毁控件,如果控件是其它线程创建会抛出View not attached to window manager异常。

3.svn工程删除后再导入可以用AplyPath来解决与服务器连接的问题。

4.xml文件不显示属性可以先将工程close再open解决。

5.工程有XX但是没有错误,可以将工程clear,或者将R文件删除,可以看下错误日志。

6.SQLiteDatabase 数据库更新与插入操作需要同步,且SQLiteOpenHelper应该是单列的,否则大量插入纪录时可能会因为抛出IllegalStateException: database not open而出现记录丢失的现象。

7.SQLiteDatabase 如果多次打开一个数据库,是否返回地址相同。

8.java.lang.IllegalArgumentExceptionComparison method violates its general contract! 产生原因是对日期排序时将Long转型成Integer时出现逻辑问题(a>b>c && c>a),导致java.util.TimSort排序错误。

9.BroadcastReceiver 不能作为内部类注册到AndroidMenifest中。

10.Android HttpURLConnection 不能在getHttpHeader()后调用setRequestProperty(String,String)设置属性,会抛出java.lang.IllegalStateException: Cannot set method after connection is made

11.Android 模拟器不能全屏,在AndroidMenifest.xml中加入

12.Android 图片使用问题,如果是480X800,创建AVD时lcd density要设为240,这时使用的是res/xxx-hdpi目录下的图片

13.创建模拟器时可以指定一个heapsize,来解决内在不足的错误。

14.自定义view如果刷新时出现奇怪的边框线条,尝试刷新它的父布局。

15.Android 模拟器vm size 不足会导致应用crash。

16.Timer.delay(long) 的实现用的是绝对时间,1970以前的时间是负数,依赖于它会有问题。

17.android进程会被终结在资源不足的时候,如果不是service和activity持有进程。

18.service可以在onStartCommand里接受Intent做一些事情。

19.手机不能访问google service,更新一下root/etc/host中的ip地址(在电脑上Ping)。

20.InputStreamReader 和OutputStreamWriter 可以设置Stream的default encode,从而解决乱码问题。
原文地址:https://www.cnblogs.com/baiyou/p/3397185.html