当前位置: 主页 >业界资讯 >查看内容
IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化:

IT蓝豹发表于 2015/10/29 10:46

------------------> sqlite数据库版本升级

1.sqlite升级步骤:

    1.自己写一个类继承自SqliteOpenHelper

    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、不要使用绝对布局

2、尽量使用match_parent 而不是fill_parent 。

3、能够使用权重的地方尽量使用权重(android:layout_weight)

4、如果是纯色背景,尽量使用android的shape 自定义。

5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配1080*1800的屏幕

(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查

找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。