IT蓝豹强烈推荐:符合1-2年工做经验,开发中的难点及相关优化: android
IT蓝豹 ios
------------------> sqlite数据库版本升级面试
1.sqlite升级步骤:算法
1.本身写一个类继承自SqliteOpenHelpersql
2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是建立数据库的时候调用与更新数据库的版本的时候调用数据库
3.Sqlite数据库主要是用来缓存应用的数据,而应用倒是一直在更新版本,相应的数据的表的字段也会一直增长会改变或减小缓存
4.这个时候就须要控制数据库的版本,由于Sqlite数据库中的字段假设新版的应用里面设计的表是10个字段,而缓存倒是以前缓存的只有9个字段的话,查询数据库以后的列函数
而后取的值会出现空指针异常或报错布局
5.因此android中引入了Sqlite数据库的版本,让应用的旧版数据库可以与新版的数据库的字段兼容优化
6.为了兼容以前的数据库的版本,只须要在应用的版本更新的时候,添加字段或者删除字段便可
7.你开发程序当前是1.0.0的版本,该程序用到了数据库,可是版本迭代以后到1.0.1的时候,数据库的某个表添加了某个字段在软件1.0.1的版本就须要升级
8.数据库升级能够为了可以让旧的数据不能丢,因此不能删除掉以前数据库中的全部数据,那么就须要有地方可以检测到版本的变化,这个跟Android的APP升级是一个道理
固然这个检测就是在SqliteOpenHelper的onUpgrade方法中
2. 数据库升级应该注意什么?
软件的1.0版本升级到1.1版本时,老的数据不能丢。那么在1.1版本的程序中就要有地方可以检测出来新的软件版本与老的
数据库不兼容,而且可以有办法把1.0软件的数据库升级到1.1软件可以使用的数据库。换句话说,要在1.0软件的数据库的那个表中增长那个字段,并赋予这个字段默认值。
3. 程序如何知道数据库须要升级?
SQLiteOpenHelper类的构造函数有一个参数是int version,它的意思就是指数据库版本号。好比在软件1.0版本中,咱们使用SQLiteOpenHelper访问数据库时,
该参数为1,那么数据库版本号1就会写在咱们的数据库中。
到了1.1版本,咱们的数据库须要发生变化,那么咱们1.1版本的程序中就要使用一个大于1的整数来构造SQLiteOpenHelper类,用于访问新的数据库,好比2。
当咱们的1.1新程序读取1.0版本的老数据库时,就发现老数据库里存储的数据库版本是1,而咱们新程序访问它时填的版本号为2,系统就知道数据库须要升级。
-----------------》 android版本适配(如何兼容4.3-2.3版本)
好比产品设计中想要一些4.3以上的新特效,可是如何去兼容4.3-2.3的用户群体呢,
前提是咱们apk在友盟数据上显示4.3-2.3占有25%的用户群体。
居于这个的考虑,咱们目前的作法就是新设计的页面使用新特效的话须要根据手机版本号判断,
若是是低版本的手机而且大部分新特效是没法兼容咱们展现老页面.
-----------------》一个apk如何快速方便的打多个不一样包名的产品(多渠道多产品推广)
咱们市场在推广apk的时候有时候须要根据渠道打不一样包名的apk而且这些打出来的apk风格和内容展现以及文字展示略有不一样。
咱们如今的作法是,把主工程项目当作libs形式关联到想要打包的工程,这样打不一样包名的时候就方便,直接建立一个工程,
把主工程关联,而后能够在新建立的工程里面略修改一些好比title风格,首页面进入风格
(由于首页咱们作了好几套能够根据类型来判断你走的是哪个风格),就是一个新的apk出现了。
------------------》android 适配
适配也是一个头疼的事,去年年末咱们就开始正对720为主流作适配了,详细适配 百度
还有有的面试官会问你,大家设计师出的图时根据ios的出仍是android的出图
有几种回答,
(1)直接根据android的出图直接作一套720*1280
(2)根据ios出图
众所周知iOS设计的像素尺寸是640*960/1136,Android主流的hdpi模式下的像素尺寸是480*800。如图,
他们的换算关系是,iOS像素尺寸的75%是Android的像素尺寸
大概算法,你们能够看看:
其实通过以上整个过程以后,咱们已经得出了一个更简单的换算关系:iOS像素尺寸*75%=Android像素尺寸,
Android像素尺寸*2/3=Android的dp尺寸。进而得出:iOS像素尺寸*75%*2/3=Android的dp尺寸。
因此,iOS里一个宽600px的东西,在Android的hdpi模式下,正好300dp,正好是50%,很容易算是吧?
简单说一下:
1、关于布局适配
一、不要使用绝对布局
二、尽可能使用match_parent 而不是fill_parent 。
三、可以使用权重的地方尽可能使用权重(android:layout_weight)
四、若是是纯色背景,尽可能使用android的shape 自定义。
五、若是须要在特定分辨率下适配,能够在res目录上新建layout-HxW.xml的文件夹。好比要适配1080*1800的屏幕
(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,而后在下面定义布局。Android系统会优先查
找分辨率相同的布局,若是不存在则换使用默认的layout下的布局。