符合1-2年工作經驗,開發中的難點及相關優化:

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

發佈了144 篇原創文章 · 獲贊 18 · 訪問量 74萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章