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