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自定义属性问题
主件的生命周期注意:
一般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里面自己划线