Android开发的一些坑

来源:互联网 发布:vmware网络配置 双网卡 编辑:程序博客网 时间:2024/06/08 13:18

ReentrantLock 更加高效的加锁方式

http://www.zhihu.com/question/33636939一些很用的方法

IOS内存使用引用计数 默认无法解决循环引用造成的内存泄露,ARC可以解决

http://www.csdn.net/article/2015-11-12/2826198

Android使用根搜索算法。可以解决循环引用问题比如Activity和View之间

http://blog.csdn.net/sunmenggmail/article/details/8172273

Android Studio 添加 jar包无法识别解决办法

今天遇到一个奇怪的问题添加一个jar无法识别,Add IS Labrary也不起作用然后做了以下二个操作解决了
刷新项目,把ide右侧gradle菜单打开,然后点击展开窗口左上角的刷新 就ok了

ViewConfiguration

   int height = ViewConfiguration.get(this).getScaledTouchSlop();

获取系统认为view最低滑动距离。这个类里面还提供了一些其他值

AlarmManager

在5.1上 最短时间 是400ms

小米最短 2分钟


xml自定义属性问题

eclispe下 需要使用app的package:xmlns:custom="http://schemas.android.com/apk/res/com.stone"
android studio 下:xmlns:custom="http://schemas.android.com/apk/res-auto"
其它的用法都一直

主件的生命周期注意:

一般onCreate onStart onResume 先调用super.onXXXX,后调用自己的代码

onPause onStop onDestroy 先调用自己的代码在调用super.onXXXX

进度条设置显示样式无效问题:

void android.widget.ProgressBar.setProgressDrawable(Drawable d)

设置自己的progress的样式 直接这样写在2.3以前系统不会起作用

需要修改成这样

Rect bounds = mProgressBar.getProgressDrawable().getBounds();

mProgressBar.setProgressDrawable(xxxx);

mProgressBar.getProgressDrawable().setBounds(bounds);

mProgressBar.setProgress(progress);

Fragment的一个用法优化:

Fragment一旦创建以后,FragmentManager系统会给我们new的对象添加Tag,在灵活的内存机制下系统回去找相应tag内是否有该对象,如果有就不会再创建

所以 以下的写法

 if (null == mSquare) {

 mSquare = new SquareFragment();

  ft.add(R.id.fragment_container, mSquare, "LEFT");

}

需要修改成以下的样式

  CircleMainFragment circlemainfragment = (CircleMainFragment) mFragmentManager.findFragmentByTag(Constant.FRAG_FIND + "");

   if (null == circlemainfragment) {

    circlemainfragment = new CircleMainFragment();

    transaction.add(R.id.center_layout, circlemainfragment, Constant.FRAG_FIND );

}

该对象没有被回收(和activity还有关联的时候)时候,从Manager里面获取的对象就是唯一了。如果用上面的写法,在我们的activtity或者fragment被回收的时候,我们定义的变量就会是null,这个时候我们就会重复创建对象。

资源图片和内存关系:

标准图片占用内容 width*height*图片位深

ALPHA_8        代表8位Alpha位图

ARGB_4444      代表16位ARGB位图

ARGB_8888      代表32位ARGB位图


本地资源图片指m h x xxh等文件下面的资源图片

对应desity ldpi  mdpi  hdpi  xhdpi

                  120  160    240     320

对应比例3:4:6:8

不同资源占用内存大小 width*height*(设备desity/对应文件desity)^2*(图片位深/8)

如图图片放错了,系统会根据上面的比例3:4:6:8进行相应缩放

数据库访问异常 多线程读写同一个数据库(可能是多个表),会造成异常

具体分析见这个文章http://www.cnblogs.com/javawebsoa/p/3237018.html

3.0以上需要这样

public DbHelper(Context context , boolean enableWAL) {this(context, DEFAULT_DB_NAME, null, DEFAULT_VERSION);if( enableWAL && Build.VERSION.SDK_INT >= 11){getWritableDatabase().enableWriteAheadLogging();}}

XListView的bug

如果设置divider后,显示内容不满整屏,向下滑动是线会跟着移动。解决办法在item view里面自己划线







0 0
原创粉丝点击