文档章节

IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化:

抉择很难
 抉择很难
发布于 2015/10/29 15:07
字数 1647
阅读 169
收藏 4


IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化:

IT蓝豹                    

                       

------------------> 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下的布局。

 

转载请正明出处:IT蓝豹   android特效


© 著作权归作者所有

抉择很难
粉丝 6
博文 51
码字总数 26157
作品 0
海淀
程序员
私信 提问
(北京)年薪10~60万 招聘c++、erlang高级工程师

PtMind是由一群来自中国、日本的年轻人共同组建的互联网数据分析公司;我们长期致力于互联网数据统计、挖掘领域;目前PtMind已在中国北京、日本东京建立起相关的研发机构和市场机构; 在创立...

tony_ptmind
2011/06/01
42.2K
80
【广州/珠海】美资上市公司 招聘 Linux驱动工程师 [猎头]

1)[招聘]【Web服务器系统架构师】(工作地点:珠海) 工作职责: 1、 深入发掘业务需求,为软件开发提供架构设计、解决方案; 2、 主持和参与系统逻辑模型和物理模型设计并实现原型; 3、 ...

DROPS
2012/05/18
763
6
北京社本互动信息技术有限公司招聘信息

PHP项目经理 待遇:10-15K/月 职位描述: 1、 精通软件项目开发方法、标准、规范,以及科学的项目管理; 2、 参与系统需求分析与设计,并负责完成底层核心代码,接口规范的开发,架构设计; ...

hr_beijing
2011/03/24
1K
34
北京 某大型知名上市互联网 招聘PHP高级开发工程师

大型门户网站正在招聘多个PHP开发相关职位,只要您对互联网感兴趣并具备PHP开发工程师的相关特质均可投递简历。我们期待您的加入! 薪资是7k-35k不等,根据个人能力的低\中\高端情况而定。 职...

IT猎头_小彭
2011/09/02
309
7
某全球知名的手机厂商通信技术研究有限公司 jd(20-30k)

某全球知名的手机厂商通信技术研究有限公司 该研究院成立于2000年8月,是该手机厂商在华投资设立的具有独立法人资格的研发机构(注册名称 :北京该手机厂商通信技术研究有限公司)。 是国家批...

neels
2017/06/01
876
2

没有更多内容

加载失败,请刷新页面

加载更多

Java自学指南五、编码工具

工欲善其事,必先利其器... 想要高效率编码输出和快速处理文本,需要 熟悉编程语言的语法 盲打 至少需要熟练使用一种文本编辑器 至少熟练熟练使用一种 IDE (集成开发环境) 现实中,看到过二指...

ConstXiong
27分钟前
4
0
Java 集合框架

早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。 虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由...

天子剑毅
43分钟前
6
0
Oracle 回滚段

--查询数据文件 select t.TABLESPACE_NAME, --表空间名 t.FILE_NAME, --文件名 t.AUTOEXTENSIBLE, --是否自动扩展 t.BYTES / 1024 / 1024 as tsize, --表空间初始大小 t.MAXBYTE...

max佩恩
51分钟前
6
0
在Serverless Kubernetes(ASK)集群中使用Nginx Ingress

ASK: Alibaba Cloud Serverless Kubernetes 导读 不同于阿里云ACK集群默认通过nginx-ingress-controller提供ingress能力,在ASK(Serverless Kubernetes)集群中默认基于SLB七层转发提供ingre...

阿里云官方博客
今天
5
0
Android换肤原理和Android-Skin-Loader框架解析

https://blog.csdn.net/stven_king/article/details/78648095 https://www.jianshu.com/p/b0253de8ac04 https://blog.csdn.net/weixin_38261570/article/details/82079540......

shzwork
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部