不平凡軟件,始于2014

首頁(yè) | 加入收藏 | 設(shè)為首頁(yè)

15565077981

您當(dāng)前的位置:首頁(yè) >  精彩分享>詳細(xì)

鄭州軟件開發(fā)告訴你安卓軟件開發(fā)注意事項(xiàng)有哪些

發(fā)布者: 鄭州軟件開發(fā) 12-05

      安卓軟件開發(fā)作為近兩年比較熱門的開發(fā)語(yǔ)言項(xiàng)目,受到了眾多軟件開發(fā)人員的推崇。對(duì)于安卓軟件開發(fā)新人來(lái)說,有很多工作中可能會(huì)遇到的陷阱需要注意,下面不平凡軟件小編就結(jié)合自己四年安卓開發(fā)經(jīng)驗(yàn)為大家詳細(xì)講解安卓系統(tǒng)開發(fā)中需要注意的一些問題。

  •    在Android library中不能使用switch-case語(yǔ)句訪問資源ID:在Android library中不能使用switch-case語(yǔ)句訪問資源ID的原因分析及解決方案
  •    不能在Activity沒有完全顯示時(shí)顯示PopupWindow和Dialog:popupwindow - Problems creating a Popup Window in Android Activity
  •    在多進(jìn)程之間不要用SharedPreferences共享數(shù)據(jù),雖然可以(MODE_MULTI_PROCESS),但極不穩(wěn)定:android - MODE_MULTI_PROCESS for SharedPreferences isn't working
  •    有些時(shí)候不能使用Application的Context,不然會(huì)報(bào)錯(cuò)(比如啟動(dòng)Activity,顯示Dialog等):
安卓軟件開發(fā)注意事項(xiàng)有哪些
  •    同一個(gè)應(yīng)用的JNI代碼,不要輕易換NDK編譯的版本,否則會(huì)有很多問題(主要是一些方法實(shí)現(xiàn)不一樣,并且高版本對(duì)代碼的檢測(cè)更嚴(yán)格),比如r8沒有問題,但到r9就有問題了,這是個(gè)大坑;
  •    Android的JNI代碼中,有返回類型的函數(shù)沒有返回值編譯的時(shí)候也不會(huì)報(bào)錯(cuò);
  •    當(dāng)前Activity的onPause方法執(zhí)行結(jié)束后才會(huì)執(zhí)行下一個(gè)Activity的onCreate方法,所以在onPause方法中不適合做耗時(shí)較長(zhǎng)的工作,這會(huì)影響到頁(yè)面之間的跳轉(zhuǎn)效率;
  •    謹(jǐn)慎使用Android的透明主題,透明主題會(huì)導(dǎo)致很多問題,比如:如果新的Activity采用了透明主題,那么當(dāng)前Activity的onStop方法不會(huì)被調(diào)用;在設(shè)置為透明主題的Activity界面按Home鍵時(shí),可能會(huì)導(dǎo)致刷屏不干凈的問題;進(jìn)入主題為透明主題的界面會(huì)有明顯的延時(shí)感;
  •    不要在非UI線程中初始化ViewStub,否則會(huì)返回null;
  •    公共接口一定要考慮到代碼重入的情況,能設(shè)計(jì)為單例就盡量用單例;
  •    不要通過Bundle傳遞大塊的數(shù)據(jù),否則會(huì)報(bào)TransactionTooLargeException異常:java - Issue: Passing large data to second Activity
  •    盡量不要通過Application緩存數(shù)據(jù),這不穩(wěn)定:不要在Android的Application對(duì)象中緩存數(shù)據(jù)!
  •    盡量不要使用AnimationDrawable,它在初始化的時(shí)候就將所有圖片加載到內(nèi)存中,特別占內(nèi)存,并且還不能釋放,釋放之后下次進(jìn)入再次加載時(shí)會(huì)報(bào)錯(cuò);
  •    9圖不能通過tinypng壓縮,不然會(huì)有問題;
  •    genymotion模擬器快是因?yàn)樗腔趚86架構(gòu)的,如果你的應(yīng)用中用到了so,但沒有x86架構(gòu)的so,只能放棄使用它;Android Studio的模擬器也一樣;
  •    Eclipse的Android開發(fā)環(huán)境配置好后不要輕易升級(jí)ADT和build tools,不然會(huì)浪費(fèi)你很多時(shí)間,還有就是一個(gè)workspace中的工程不要太多,不然每次啟動(dòng)都會(huì)很慢;
  •    Android studio每個(gè)版本、gradle每個(gè)版本差別都比較大(我是這樣認(rèn)為的),對(duì)于jni代碼的編譯建議在Eclipse中進(jìn)行,如果在Android studio中開發(fā)jni會(huì)浪費(fèi)很多時(shí)間,主要是編譯腳本的配置比較麻煩;
  •    Eclipse中的Lint太不靠譜,特別是主工程中依賴library的時(shí)候,很多提示都是有問題的,建議使用Android Studio的工程清理工具,特別推薦;
  •    不同API版本的AsyncTask實(shí)現(xiàn)不一樣,有的是可以同時(shí)執(zhí)行多個(gè)任務(wù),有的API中只能同時(shí)執(zhí)行一個(gè)線程,所以在程序中同時(shí)執(zhí)行多個(gè)AsyncTask時(shí)有可能遇到一個(gè)AsyncTask的excute方法后很久都沒有執(zhí)行。調(diào)用AsyncTask的excute方法不能立即執(zhí)行程序的原因分析及改善方案
  •    同一個(gè)應(yīng)用,相同的圖片分別放在drawable-xxhdpi、drawable-xhdpi、drawable-hdpi、drawable-mdpi、drawable-ldpi中,在同一設(shè)備中占用的內(nèi)存會(huì)大不一樣(設(shè)備的dpi是固定的,圖片放在不同的dpi文件夾下,在設(shè)備上顯示時(shí)需要將圖片轉(zhuǎn)換成和當(dāng)前屏幕一樣dpi后在設(shè)備中顯示,所以即使該圖片在不同dpi文件夾下大小一樣,但放在內(nèi)存中的大小卻不是一樣的,并不一定是長(zhǎng)*寬*4),做應(yīng)用的內(nèi)存優(yōu)化之前可以先看一看你的工程是如何做屏幕適配的,是否有優(yōu)化的空間。強(qiáng)烈推薦這個(gè)屏幕適配視頻教程,花兩個(gè)半小時(shí)就能看完:Android-屏幕適配全攻略
  •    謹(jǐn)慎對(duì)待數(shù)據(jù)庫(kù)升級(jí)(比如需要在原數(shù)據(jù)庫(kù)中增加字段),避免數(shù)據(jù)丟失或者操作數(shù)據(jù)庫(kù)異常的情況,數(shù)據(jù)庫(kù)升級(jí)方法可以查閱《第一行代碼》P263;
  •    多個(gè)程序共用一套代碼(一套代碼,在桌面上多個(gè)圖標(biāo))時(shí)需要處理好不同入口進(jìn)入時(shí)的堆棧問題;
  •    使用Adapter的時(shí)候,如果你使用了ViewHolder做緩存,在getView的方法中無(wú)論這項(xiàng)的每個(gè)視圖是否需要設(shè)置屬性(比如TextView設(shè)置的屬性可能為null,item的某一個(gè)按鈕的背景為透明、某一項(xiàng)的顏色為透明等),都需要為每一項(xiàng)的所有視圖設(shè)置屬性(textview的屬性為空也需要設(shè)置setText(""),背景透明也需要設(shè)置),否則在滑動(dòng)的過程中會(huì)出現(xiàn)內(nèi)容的顯示錯(cuò)亂。
  •    謹(jǐn)慎使用Android的多進(jìn)程,多進(jìn)程雖然能夠降低主進(jìn)程的內(nèi)存壓力,但會(huì)遇到如下問題:(1)不能實(shí)現(xiàn)完全退出所有Activity的功能(如果有同行在應(yīng)用內(nèi)采用多進(jìn)程成功實(shí)現(xiàn)過完全退出程序歡迎溝通交流);(2)首次進(jìn)入新啟動(dòng)進(jìn)程的頁(yè)面時(shí)會(huì)有延時(shí)的現(xiàn)象(有可能黑屏、白屏幾秒,是白屏還是黑屏和新Activity的主題有關(guān));(3)應(yīng)用內(nèi)多進(jìn)程時(shí),新啟動(dòng)一個(gè)進(jìn)程都會(huì)重新跑一次Application的onCreate方法,不上重新創(chuàng)建一個(gè)Application,但會(huì)重新跑Application的onCreate,這樣就不能在Application中緩存數(shù)據(jù)作為內(nèi)存共享的途徑了;(4)多進(jìn)程間通過SharedPreferences共享數(shù)據(jù)時(shí)不穩(wěn)定,具體可以查閱《Android開發(fā)藝術(shù)探索》。
  •    使用Toast時(shí),建議定義一個(gè)全局的Toast對(duì)象,這樣可以避免連續(xù)顯示Toast時(shí)不能取消上一次Toast消息的情況(如果你有連續(xù)彈出Toast的情況,避免使用Toast.makeText);
  •    View的面積越大繪制的時(shí)間就越長(zhǎng),透明通道對(duì)View的繪制速度影響很大;
  •    不要通過Msg傳遞大的對(duì)象,會(huì)導(dǎo)致內(nèi)存問題。

      不平凡軟件,鄭州軟件開發(fā)公司,鄭州軟件開發(fā),鄭州軟件定制,鄭州微信開發(fā),鄭州進(jìn)銷存定制開發(fā),鄭州OA系統(tǒng)開發(fā),鄭州軟件開發(fā)公司

返回列表

上一篇

商城網(wǎng)站賣產(chǎn)品運(yùn)用好“綁”字可以讓你的銷量直線上升

下一篇

鄭州做軟件告訴你企業(yè)財(cái)務(wù)管理軟件配置方式及優(yōu)缺點(diǎn)對(duì)比

相關(guān)新聞

相關(guān)案例