導航:首頁 > 操作系統 > android開發藝術探索代碼

android開發藝術探索代碼

發布時間:2022-06-19 01:04:56

A. 學安卓開發的話難不難和java比哪個好學

閱讀進階書籍,閱讀android源碼,閱讀官方文檔並嘗試自己寫相關的技術文章,需要有一定技術深度和自我思考。在這個階段的學習過程中,有2個點是比較困擾大家的,一個是閱讀源碼,另一個是自定義View以及滑動沖突。
如何閱讀源碼呢?這是個頭疼的問題,但是源碼必須要讀。閱讀源碼的時候不要深入代碼細節不可自拔,要關注代碼的流程並盡量挖掘出對應用層開發有用的結論。另外仔細閱讀源碼中對一個類或者方法的注釋,在看不懂源碼時,源碼中的注釋可以幫你更好地了解源碼中的工作原理,這個過程雖然艱苦,但是別無他法。
如何玩轉自定義View呢?我的建議是不要通過學習自定義view而學習自定義view。為什麼這么說呢?因為自定義view的種類太多了,各式各樣的絢麗的自定義效果,如何學的玩呢!我們要透過現象看本質,更多地去關注自定義view所需的知識點,這里做如下總結:
- 搞懂view的滑動原理
- 搞懂如何實現彈性滑動
- 搞懂view的滑動沖突
- 搞懂view的measure、layout和draw
- 然後再學習幾個已有的自定義view的例子
- 最後就可以搞定自定義view了,所謂萬變不離其宗
大概再需要1-2年時間,即可達到高級工程師的技術水平。我個人認為通過《Android開發藝術探索》和《Android群英傳》可以縮短這個過程為0.5-1年。注意,達到高級工程師的技術水平不代表就可以立刻成為高級工程師(受機遇、是否跳槽的影響),但是技術達到了,成為高級工程師只是很簡單的事。
技術要求:
- 稍微深入的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動沖突、自定義View、消息隊列等
- 書籍推薦
《Android開發藝術探索》、《Android群英傳》

B. 學Android看哪本書最詳細

學習安卓入門的話可以看郭神的《第一行代碼》(第三版),進階可以看任玉剛的《Android開發藝術探索》

縮放圖片可以用PhotoView框架:網頁鏈接

製作二維碼可以用ZXing框架:網頁鏈接

C. 怎麼准備Android面試

總體上來說可以分為兩種類型,小公司注重你的實踐能力,大公司看中你的綜合能力。小公司面試會比較集中安卓開發這一塊,比較在意你之前有沒有類似的項目經驗,有沒有遇到過目前他們所遇到的一些問題,准備這類公司面試除了基本的一些知識點還需要關注一些安卓開發實際中經常遇到的一些問題,諸如圖片緩存,常見的開源框架,oom問題等等。大公司面試比較在意你的綜合能力,無外乎是數據結構與演算法,計算機網路,操作系統,Java這。我想說在我列出的這么多考查點中,數據結構與演算法是一個分水嶺,這個的准備需要一個長時間的積累,真正的高手與一般人一試就知道,屢試不爽,所以很多公司都痴迷於考演算法,像是美團,網路,愛奇藝等公司,總共整個面試下來可以讓你手寫5個演算法題以上,我說這么多隻想告訴你這是一個門檻,能不能跨過去決定了你最終所找工作的水準,所以我都會建議每一個找程序員相關工作的人,這一塊要盡早准備,多刷一些leetcode或是其他類似的題。然後在剩下的幾塊知識中,我只想說你可以不用全部都懂,但是你必須要在某一塊知識點是有深入研究的,能夠回答面試官4到5個追加問題,如果所以知識點都只能答上一到兩個,面試官會覺得你的水平就是這樣了,另外也會覺得你沒有探究精神,關於後面一點是很恐怖的沒有探究精神做不了好的程序員。如果按照重要程度,面試安卓我覺得可以做一個這樣的排序:數據結構與演算法,java,安卓,計算機網路,操作系統,後面是資料庫或是設計模式之類的。java這一塊比較重要的是多線程同步非同步,java虛擬機內存回收,容器,面向對象一些知識點。就單單是多線程和虛擬機都可以看好幾本專門講解的書了,其他知識點就多啃啃java編程思想,遇到不懂在多翻翻博客加深理解。安卓這一塊,非同步機制,view的繪制,自定義控制項,四大組件都非常重要。不管是android或是java都最好看一些源碼,java可以看一些容器的源碼,android可以看handler,looper,message等非同步通信的源碼或是一些開源框架的源碼,會看源碼絕對是加分項。計算機網路可以注重看上面幾層,傳輸層注重研究。一般來說,前面這幾點掌握好了,足以聊好幾輪面試,一般面試官你都可以引導他去聊一些你擅長的知識點。後面幾塊知識點,你可以先掌握一些比較重要的,不一定每次面試都會遇到,但是也得准備。
我只提供一些大概的思路,具體到沒一塊知識點怎麼准備可以自己去搜集,大的方向對了加上好的執行力一般可以取得不錯的結果,祝好!

2016.03.14更新,加一些具體的准備建議:

上面這幾塊知識點,按照其重要程度排序,我個人認為可以這樣排:數據結構與演算法,Java,Android(如果不找安卓的就去掉這部分),計算機網路,操作系統,設計模式。下面我就按照這個順序給出一些准備建議。
Ø 數據結構與演算法
推薦書籍:大話數據結構,數據結構與演算法分析(java語言描述),劍指offer,進軍矽谷。
推薦在線刷題網站:Leetcode(LeetCode Online Judge),Lintcod(LintCode - 主頁),牛客網(在線編程_C++Java前端經典筆試面試題庫)
推薦方案:主要做三件事。
1, 先看一遍大話數據結構,熟悉一些基本概念,大話這本書只講了一些基本的數據結構,像是B樹,B+樹,紅黑樹需要自己看一些博客或是網站,推薦一個講解演算法的網站-七月演算法,另外海量數據處理也是一個經常考的專題,它結合了數據結構和操作系統的一些知識,這個需要進行針對性准備。
2,然後開始刷題,最推薦的肯定是leetcode,刷題建議按照標簽進行刷題(比如隊列,棧,哈希表),刷題從易到難,最好能夠刷一百題左右,如果一天一題,至少要三個月以上,所以這個耗時比較長,要從比較早開始准備。進軍矽谷這本書有按照專題進行編排,基本上的題目來自leetcode,可以作為一個參考。
2, 然後要分析一些常見數據結構的源碼實現(比如隊列,棧,hashmap之類的),數據結構與演算法分析這本書有講一些,可以結合一些博客進行准備。
Ø Java
找程序員工作,大多數情況下需要掌握好一門面向對象的語言,主流上分為Java和C++兩大陣營。這里講Java需要怎麼准備。
入門書籍:Java核心技術卷一,Head first in java(如果一點面向對象的概念都沒有那就看這本)
提高書籍:Java編程思想
Java虛擬機:深入理解Java虛擬機
Java多線程:Java多線程編程核心技術,Java並發編程實踐
其實我覺得如果有一定基礎建議直接看Java編程思想,面試中的考點經常都會在這本書中有講到。當然Java虛擬機和多線程這兩塊需要再看一些專門講解的書,每一次java面試考查內容幾乎都離不開這兩塊。
總體來說java考察內容包括以下這些:
1,面向對象的一些基本概念:繼承,多態之類的
2, 抽象類和介面
3, 靜態類,內部類
4, Java集合類,同步和非同步
5, Java類載入機制
6, Java內存模型和垃圾回收演算法
7, 線程同步機制(volatile,synchronized,重入鎖,threadlocal),線程間通信(wait,notify)
8, 異常處理
9, 多線程同步問題,生產者消費者,讀者寫者,哲學家就餐,用java實現
10,
了解java中設計模式的思想,用了哪些設計模式,有什麼好處
Ø Android
入門書籍:第一行代碼。
提高書籍:Android群英傳,Android開發藝術探索。
上面的書看好了,一般問題不大。主要問的一些問題:
1, Activity,Service,BrocastReceiver,Intent,Fragemnet,ContentProvider,這些組件的基礎知識,比如Activity兩種啟動方式,生命周期,四種啟動模式,Service則主要是:兩種啟動方式,生命周期。還有組件之間怎麼通信之類的問題。
2, Android的數據存儲方式,資料庫,sd卡,SharedPreferences 這些
3, Listview的優化,與scollview的區別
4, view狀態與重繪,view的繪制過程,view的事件分發機制,view的事件沖突處理
5, Android多線程非同步機制,AsyncTask工作原理與源碼實現,Handler,Message,Looper非同步實現機制與源碼分析
6, Android常見的開源框架(主要是網路通信,圖片載入這些),了解怎麼使用,分析源碼
7, Oom和anr異常引發的原因,怎麼解決
8, 了解一些常見的圖片緩存技術
Ø 計算機網路
推薦書籍:計算機網路自頂向下,tcp/ip協議詳解卷一
主要看:主要看應用層,傳輸層,網路層,其中傳輸層最為重要。主要的一些考察內容有:
1, TCP和UDP的區別
2, TCP的三次握手,和四次揮手,為什麼需要三次握手,為什麼要四次揮手(這兩個為什麼要考慮非常清楚)
3, TCP擁塞控制演算法(慢啟動,擁塞避免,快速恢復),流量控制演算法,滑動窗口協議,選擇重傳。
4, TCP可靠性是怎麼保證的(通過哪些機制保證)?
5, HTTP協議報文格式,請求方法欄位以及各個方法之間的區別,了解常見的響應狀態碼,了解cookie機制,了解WEB緩存技術(條件get方法)。
6, DNS協議的各層域名伺服器,兩種查詢方式(遞歸和迭代),dns緩存
7, Udp的特點,適用場景,校驗機制
8, 從輸入一個網址到最後網頁顯示整個過程發生了什麼?
9, IP地址組成,ARR,RARP,ICMP協議,路由選擇演算法

D. 如何學習安卓軟體開發

一、前言

不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你才會發現懂的越少。
如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多Android新手問Android學習路線,學習方法啊,如何入門啊,所以我從網上找了一些資料,然後以我的工作經驗給大家總結一下,讓你們少走彎路,提取一些工作中經常用到的技術。
二、學習知識匯總1、Java se基礎
1).Java基本數據類型與表達式,分支循環。
2).String和StringBuffer的使用、正則表達式。
3).面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類。
4).對象實例化過程、方法的覆蓋、final關鍵字、抽象類、介面、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和介面在多態中的應用、多態帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應實現類,IO性能分析,位元組和字元的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
2、android UI編程
1)、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個Android應用程序,Android應用程序目錄結構。
2)、Android初級控制項的使用:
TextView控制項的使用
Button控制項的使用方法
EditText控制項的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)、Android高級控制項的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、對話框與菜單的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現方法
5.控制項的布局方法:
線性布局的使用方法
相對布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定義控制項實現方法:
自定義ListView的實現方法
可折疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動態控制項布局的上實現方法
上拉刷新下拉載入更多
3、android網路編程與數據存儲
1).基於Android平台的HTTP通訊:
Http協議回顧
使用Get方法向伺服器提交數據的方法
使用POST方法向伺服器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳
2).Android數據存儲技術:
SQLite3資料庫簡介
SQL語句回顧
SQLite3編程介面介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法
參考自:Android學習路線
三、進階之路(初級->中級->高級)1、初級工程師
小明之前完全沒接觸過Android開發,是個應屆生,他的待遇是13k,然後小明以校招的身份進入了網路,然後小明需要怎麼學習才能成為初級工程師呢?這個時候,小明對編程基礎、數據結構、C語言都有一定基礎,Java語法什麼的也都掌握的比較好,Android才有java語言,無奈的是小明並不會搞Android。
小明首先需要購買一本Android入門的書籍,為了更快地學習Android,小明業余時間也都用來一邊看書一邊照著書中的例子敲代碼,結果2周時間小明就把這本書學了一遍。看完這本書後,小明對Android的歷史、結構、代碼規范等都有了一個大概的了解,並且,小明已經可以寫出一些簡單的Activity了。這個時候在小明眼裡,Android開發很簡單很好玩,通過在xml中擺放一些按鈕文本框什麼的就可以做一些界面了。
小明開始跟著他的技術導師做需求,一些簡單的小需求小明自然是不在話下了。突然有一天來了一個需求,該需求要求小明在Activity中為一個button加一個動畫效果,小明慌了:「完全沒接觸過,書上也沒有講,怎麼辦呢?」小明冷靜了下,打開了網路搜索,輸入「Android 動畫」,打開前幾個鏈接,小明恍然大悟,照著網上的例子把需求給實現了。後來導師告訴他:「學好Android,官方文檔是必須看的,既全面又權威」。然後小明如獲至寶,花了一年時間把上面的guide和training都看了一遍,並且他還動手抄了幾個小例子。
有一天,小明又需要做一個動畫相關的需求,這可難不倒小明,它熟練地打開了網路一下,你就知道,輸入「Android 動畫」,突然他楞了一下:」總不能每次寫動畫都要網路一下吧!「,於是他在CSDN開了一個博客,把動畫相關的知識點都寫上去,為的是後面再寫動畫相關的代碼就不用網路去搜了,事實如何呢?後面再寫動畫相關的代碼,小明的確不用再去網路搜了,因為通過寫一篇動畫博客,他把動畫相關的細節都已經記住了,這樣他就可以不用再去參考任何文檔了,後來小明還學會了把一些瑣碎的不方便放在博客上的東西寫到了印象筆記上面,什麼時候忘了10秒鍾以內都可以快速找回來,而不是花10分鍾去再次搜索一遍。
這里總結一下,Android入門的時候,需要有一本入門書,好好學習書中的內容,同時花一年時間把Android官方文檔中的training和guide看一遍,同時通過寫博客和記筆記的方式來做總結,建議讓自己的每篇博客都有價值些。通過一年時間的學習,相信每個人都可以達到中級工程師的水平。
技術要求:
基本知識點
比如四大組件如何使用、如何創建Service、如何進行布局、簡單的自定義View、動畫等常見技術
書籍推薦
《第一行代碼 Android》、《瘋狂Android》
2、中級工程師
小明經過一年的努力學習終於成為Android中級工程師了,月薪變成了17k。到了中級工程師,已經可以在公司里干很多體力活了,但是一些很重要的任務小明還不能一個人承擔起來,這個時候小明需要學習的內容就很多了,如下所示:
AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區別;
Binder:從Java層大概理解Binder的工作原理,懂Parcel對象的使用;
多進程:熟練掌握多進程的運行機制,懂Messenger、Socket等;
事件分發:彈性滑動、滑動沖突等;
玩轉View:View的繪制原理、各種自定義View;
動畫系列:熟悉View動畫和屬性動畫的不同點,懂屬性動畫的工作原理;
懂性能優化、熟悉mat等工具
懂點常見的設計模式
學習方法
閱讀進階書籍,閱讀Android源碼,閱讀官方文檔並嘗試自己寫相關的技術文章,需要有一定技術深度和自我思考。在這個階段的學習過程中,有2個點是比較困擾大家的,一個是閱讀源碼,另一個是自定義View以及滑動沖突。
如何閱讀源碼呢?這是個頭疼的問題,但是源碼必須要讀。閱讀源碼的時候不要深入代碼細節不可自拔,要關注代碼的流程並盡量挖掘出對應用層開發有用的結論。另外仔細閱讀源碼中對一個類或者方法的注釋,在看不懂源碼時,源碼中的注釋可以幫你更好地了解源碼中的工作原理,這個過程雖然艱苦,但是別無他法。
如何玩轉自定義View呢?我的建議是不要通過學習自定義view而學習自定義view。為什麼這么說呢?因為自定義view的種類太多了,各式各樣的絢麗的自定義效果,如何學的玩呢!我們要透過現象看本質,更多地去關注自定義view所需的知識點,這里做如下總結:
搞懂view的滑動原理
搞懂如何實現彈性滑動
搞懂view的滑動沖突
搞懂view的measure、layout和draw
然後再學習幾個已有的自定義view的例子
最後就可以搞定自定義view了,所謂萬變不離其宗
大概再需要1-2年時間,即可達到高級工程師的技術水平。我個人認為通過《Android開發藝術探索》和《Android群英傳》可以縮短這個過程為0.5-1年。注意,達到高級工程師的技術水平不代表就可以立刻成為高級工程師(受機遇、是否跳槽的影響),但是技術達到了,成為高級工程師只是很簡單的事。
技術要求:
稍微深入的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動沖突、自定義View、消息隊列等
書籍推薦
《Android開發藝術探索》、《Android群英傳》
3、高級工程師
小明成為了夢寐以求的高級工程師,月薪達到了20k,還拿到了一丟丟股票。這個時候小明的Android水平已經不錯了,但是小明的目標是資深工程師,小明聽說資深工程師月薪可以達到30k+。
為了成為Android資深工程師,需要學習的東西就更多了,並且有些並不是那麼具體了,如下所示:
繼續加深理解」稍微深入的知識點「中所定義的內容
了解系統核心機制:
了解SystemServer的啟動過程
了解主線程的消息循環模型
了解AMS和PMS的工作原理
能夠回答問題」一個應用存在多少個Window?「
了解四大組件的大概工作流程

基本知識點的細節
Activity的啟動模式以及異常情況下不同Activity的表現
Service的onBind和onReBind的關聯
onServiceDisconnected(ComponentName className)和binderDied()的區別
AsyncTask在不同版本上的表現細節
線程池的細節和參數配置

熟悉設計模式,有架構意識學習方法
這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和做項目,平時多種總結,盡量將知識融會貫通從而形成一種體系化的感覺。同時這個階段對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習。關於設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰》,既可以學習設計模式,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書。
技術要求:
稍微深入的知識點
系統核心機制
基本知識點的細節
設計模式和架構
書籍推薦
《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》
參考自:Android學習路線指南
四、學習視頻跟書籍
當你有了學習線路,學習哪些內容,也知道以後的路怎麼走了,理論看多了總要實踐的,我這里給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我。。。下載。。

附上出處鏈接:https://www.hu.com/question/21112875/answer/97586938

E. Android開發藝術探索IPC章節疑問,閱讀過此書的高手請指導一下。不懂的請別亂cv瞎回復 謝謝。

模糊

F. 怎樣從零開始學習安卓軟體開發

1、Java se基礎

1).Java基本數據類型與表達式,分支循環。
2).String和StringBuffer的使用、正則表達式。
3).面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類。
4).對象實例化過程、方法的覆蓋、final關鍵字、抽象類、介面、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和介面在多態中的應用、多態帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應實現類,IO性能分析,位元組和字元的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。

2、android UI編程

1)、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個Android應用程序,Android應用程序目錄結構。

2)、Android初級控制項的使用:

TextView控制項的使用
Button控制項的使用方法
EditText控制項的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法

3)、Android高級控制項的使用:

ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView

4、對話框與菜單的使用:

Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現方法

5.控制項的布局方法:

線性布局的使用方法
相對布局的使用方法

6.多Acitivity管理:

AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法

7、自定義控制項實現方法:

自定義ListView的實現方法
可折疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動態控制項布局的上實現方法
上拉刷新下拉載入更多

3、android網路編程與數據存儲

1).基於Android平台的HTTP通訊:

Http協議回顧
使用Get方法向伺服器提交數據的方法
使用POST方法向伺服器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳

2).Android數據存儲技術:

SQLite3資料庫簡介
SQL語句回顧
SQLite3編程介面介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法

初級工程師

技術要求:

-----------------------------------------------------------------

作者:小碼同學
鏈接:https://zhuanlan.hu.com/p/163528281
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

G. Android 開發中,有哪些坑需要注意

同一個應用的JNI代碼,不要輕易換NDK編譯的版本,否則會有很多問題(主要是一些方法實現不一樣,並且高版本對代碼的檢測更嚴格),比如r8沒有問題,但到r9就有問題了,這是個大坑;

Android的JNI代碼中,有返回類型的函數沒有返回值編譯的時候也不會報錯;
當前Activity的onPause方法執行結束後才會執行下一個Activity的onCreate方法,所以在onPause方法中不適合做耗時較長的工作,這會影響到頁面之間的跳轉效率;

謹慎使用Android的透明主題,透明主題會導致很多問題,比如:如果新的Activity採用了透明主題,那麼當前Activity的onStop方法不會被調用;在設置為透明主題的Activity界面按Home鍵時,可能會導致刷屏不幹凈的問題;進入主題為透明主題的界面會有明顯的延時感;

不要在非UI線程中初始化ViewStub,否則會返回null;

公共介面一定要考慮到代碼重入的情況,能設計為單例就盡量用單例;

不要通過Bundle傳遞大塊的數據,否則會報TransactionTooLargeException異常:java - Issue: Passing large data to second Activity
盡量不要通過Application緩存數據,這不穩定:不要在Android的Application對象中緩存數據!
盡量不要使用AnimationDrawable,它在初始化的時候就將所有圖片載入到內存中,特別占內存,並且還不能釋放,釋放之後下次進入再次載入時會報錯;
9圖不能通過tinypng壓縮,不然會有問題;
genymotion模擬器快是因為它是基於x86架構的,如果你的應用中用到了so,但沒有x86架構的so,只能放棄使用它;Android Studio的模擬器也一樣;

Eclipse的Android開發環境配置好後不要輕易升級ADT和build tools,不然會浪費你很多時間,還有就是一個workspace中的工程不要太多,不然每次啟動都會很慢;
Android studio每個版本、gradle每個版本差別都比較大(我是這樣認為的),對於jni代碼的編譯建議在Eclipse中進行,如果在Android studio中開發jni會浪費很多時間,主要是編譯腳本的配置比較麻煩;
Eclipse中的Lint太不靠譜,特別是主工程中依賴library的時候,很多提示都是有問題的,建議使用Android Studio的工程清理工具,特別推薦;
不同API版本的AsyncTask實現不一樣,有的是可以同時執行多個任務,有的API中只能同時執行一個線程,所以在程序中同時執行多個AsyncTask時有可能遇到一個AsyncTask的excute方法後很久都沒有執行。調用AsyncTask的excute方法不能立即執行程序的原因分析及改善方案
同一個應用,相同的圖片分別放在drawable-xxhdpi、drawable-xhdpi、drawable-hdpi、drawable-mdpi、drawable-ldpi中,在同一設備中佔用的內存會大不一樣(設備的dpi是固定的,圖片放在不同的dpi文件夾下,在設備上顯示時需要將圖片轉換成和當前屏幕一樣dpi後在設備中顯示,所以即使該圖片在不同dpi文件夾下大小一樣,但放在內存中的大小卻不是一樣的,並不一定是長*寬*4),做應用的內存優化之前可以先看一看你的工程是如何做屏幕適配的,是否有優化的空間。強烈推薦這個屏幕適配視頻教程,花兩個半小時就能看完:Android-屏幕適配全攻略
謹慎對待資料庫升級(比如需要在原資料庫中增加欄位),避免數據丟失或者操作資料庫異常的情況,資料庫升級方法可以查閱《第一行代碼》P263;
多個程序共用一套代碼(一套代碼,在桌面上多個圖標)時需要處理好不同入口進入時的堆棧問題;
使用Adapter的時候,如果你使用了ViewHolder做緩存,在getView的方法中無論這項的每個視圖是否需要設置屬性(比如TextView設置的屬性可能為null,item的某一個按鈕的背景為透明、某一項的顏色為透明等),都需要為每一項的所有視圖設置屬性(textview的屬性為空也需要設置setText(""),背景透明也需要設置),否則在滑動的過程中會出現內容的顯示錯亂。
謹慎使用Android的多進程,多進程雖然能夠降低主進程的內存壓力,但會遇到如下問題:(1)不能實現完全退出所有Activity的功能(如果有同行在應用內採用多進程成功實現過完全退出程序歡迎溝通交流);(2)首次進入新啟動進程的頁面時會有延時的現象(有可能黑屏、白屏幾秒,是白屏還是黑屏和新Activity的主題有關);(3)應用內多進程時,新啟動一個進程都會重新跑一次Application的onCreate方法,不上重新創建一個Application,但會重新跑Application的onCreate,這樣就不能在Application中緩存數據作為內存共享的途徑了;(4)多進程間通過SharedPreferences共享數據時不穩定,具體可以查閱《Android開發藝術探索》。
使用Toast時,建議定義一個全局的Toast對象,這樣可以避免連續顯示Toast時不能取消上一次Toast消息的情況(如果你有連續彈出Toast的情況,避免使用Toast.makeText);
View的面積越大繪制的時間就越長,透明通道對View的繪制速度影響很大;
不要通過Msg傳遞大的對象,會導致內存問題。
關於AS的使用經驗,參見:[Android Studio使用過程中需要弄明白的一些問題](Eclipse轉Android Studio的過程中有必要弄明白的一些問題 - 張明雲的知識共享 - 知乎專欄)

Eclipse的工程轉成AS的版本後,在同一個機器中安裝會報」INSTALL_FAILED_VERSION_DOWNGRADE「這個錯誤,原因是因為as除了可以在Manifest.xml文件中設置apk的版本名和版本號,還可以在build.gradle文件中設置apk的版本名和版本號,記得修改build.gralde中的版本名和版本號到最新就可以了;

通常情況下,在插入USB之後可能會跳轉到一個新的界面,這時候可能你本來是橫屏的,突然跳轉到這個新界面是豎屏的,雖然你的界面被壓在下面,但是還是會被強制橫豎屏切換一次,如果這時候你的界面不做處理就會重載,如果你的界面裡面有很多fragment,這時候的重載更加復雜,難以處理。所以建議不做橫豎屏切換的界面都弄一下橫豎屏切換不重載。

如果你在 manifest 中把一個 activity 設置成 android:windowSoftInputMode="adjustResize",那麼 ScrollView(或者其它可伸縮的 ViewGroups)會縮小,從而為軟鍵盤騰出空間。但是,如果你在 activity 的主題中設置了 android:windowFullscreen="true",那麼 ScrollView 不會縮小。這是因為該屬性強制 ScrollView 全屏顯示。然而在主題中設置 android:fitsSystemWindows="false" 也會導致 adjustResize 不起作用;

做自定義手寫功能時,底層上報的點並不會都在MotionEvent中能夠及時接收到,比如底層一秒鍾200個點,上層收到的可能只有幾十個點,為了提高手寫的流暢度,在onTouchEvent中,通過MotionEvent中的getHistorySize能夠獲取到從底層傳輸到上層過程中所有的點。

H. 安卓開發教材

你好

滿意請採納

I. Android 開發者應該先看哪些文檔

作為計算機專業的學生我可以給你以下建議,希望能給你有所幫助。

你首先要有java基礎(android是基於java),想必大學課程都有教,而DOCS中的Dev Guide裡面對其解釋十分清晰,可以仔細閱讀。並可以到相關社區中找到很多的文檔和學習資料。

軟體的開發需要耐心,所以不能急要慢慢的測試,你要知道一個軟體成功的開發出來需要多少時間多少軟體開發者的心血。勿忘初心方得始終。

閱讀全文

與android開發藝術探索代碼相關的資料

熱點內容
南詔pdf 瀏覽:745
windows如何代碼bat啟動伺服器 瀏覽:454
軟體太卡與伺服器有什麼關系 瀏覽:402
給心理治療師pdf 瀏覽:220
robinhood加密交易條件 瀏覽:312
衛生間解壓方法 瀏覽:452
u盤如何做加密文件放照片 瀏覽:331
文件夾自己加了exe 瀏覽:262
小豬cms直播系統源碼 瀏覽:878
山東廣電雲伺服器 瀏覽:354
javadate與mysqldate 瀏覽:244
javalong比較 瀏覽:12
加密大師看不見加密文件 瀏覽:307
想做一個業余程序員 瀏覽:793
python選出行 瀏覽:249
cat命令windows 瀏覽:910
python算術游戲 瀏覽:532
常微分方程第二版pdf 瀏覽:25
phpJava學多久 瀏覽:724
php博客畢業設計 瀏覽:796