1. 程式人生 > >Android開發藝術探索 圖書勘誤

Android開發藝術探索 圖書勘誤

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                       

第一章

  1. 在13頁提到“系統只在Activity異常終止的時候才會呼叫onSaveInstanceState與onRestoreInstanceState來儲存和恢復資料,其他情況不會觸發這個過程。”這句話的描述不確切,準確點說,應該是“系統只在Activity異常終止的時候才會呼叫onSaveInstanceState與onRestoreInstanceState來儲存和恢復資料,其他情況不會觸發這個過程。但是按Home鍵或者啟動新Activity仍然會單獨觸發onSaveInstanceState的呼叫。”
  2. 在25頁中提到“最後再在MainActivity中單擊按鈕啟動SecondActivity,現在按back鍵,然後看到的是哪個Activity?”這句話表達不確切,準確點說,應該是“然後按兩次back鍵”,詳情可以參考具體的分析。
  3. 第12頁第一行中“在我們選擇螢幕以後”,改為“當我們旋轉螢幕以後”。
  4. 第28頁的第一句話,“這個模式一般需要和FLAG_ACTIVITY_NEW_TASK 配合使用,在這種情況下”,改為“這個標記位一般會和singleTask啟動模式一起出現,在這種情況下”。
  5. 第1.2.2小節中,Activity的Flags,這一節的內容直接翻譯了Android官方文件(
    http://developer.android.com/guide/components/tasks-and-back-stack.html#TaskLaunchModes
    ),但是經過例項驗證,發現書中的描述不準確(或者說官方文件中的描述不準確),結論為:Flags並不能簡單地等同於啟動模式,這一塊內容需要進一步驗證。

第二章

  1. 在47頁中提到“以上就是Parcelable和Serializable和區別”。此處有筆誤,應該是“以上就是Parcelable和Serializable的區別”。
  2. 在47頁中提到“直觀來說,Binder是Android中的一個類,它繼承了IBinder介面。”此處用語不嚴謹,應該為“它實現了IBinder介面”。
  3. 在86頁中提到“其中 beginBroadcast 和 beginBroadcast 必須要配對使用,哪怕我們僅僅是想要獲取 RemoteCallbackList 中的元素個數”。此處有筆誤,應該是“其中 beginBroadcast 和 finishBroadcast 必須要配對使用,哪怕我們僅僅是想要獲取 RemoteCallbackList 中的元素個數”。
  4. 在36頁中提到“Linux上可以通過命名管道、共享內容、訊號量等來進行程序間通訊”,改為”Linux上可以通過命名管道、共享記憶體、訊號量等來進行程序間通訊“。
  5. 在42頁中倒數第6行提到” 在 Android 中也提供了新的序列化方式,那就是 Parcelable 介面,使用 Parcelable 來實現物件的序列號。“,改為”在 Android 中也提供了新的序列化方式,那就是 Parcelable 介面,使用 Parcelable 來實現物件的序列化。“
  6. 第90頁,aidl那一節,服務端和客戶端如果是兩個工程,則在Service的onBind方法中無法驗證客戶端的許可權。原因是onBind方法並不是一個Binder呼叫,它執行在服務端的UI執行緒中,故在onBind中只能驗證服務端的許可權,然而這是沒有意義的。推薦大家按照第二種方法,在onTransact方法中對客戶端進行許可權驗證。

第三章

  1. 第132頁中提到” 上面簡單介紹了通過動畫來移動 View 的方法,關於動畫會在第 5 章中進行詳細說明“,改為”上面簡單介紹了通過動畫來移動 View 的方法,關於動畫會在第 7 章中進行詳細說明“。同理,135頁中的第5章也應該是第7章。
  2. 第125頁中提到” ACTION_UP——手機從螢幕上鬆開的一瞬間。“,改為”ACTION_UP——手指從螢幕上鬆開的一瞬間。“
  3. 第126頁中提到” 接著,當我們先知道當前的滑動速度時,這個時候可以採用如下方式來獲得當前的速度“,改為”接著,當我們想知道當前的滑動速度時,這個時候可以採用如下方式來獲得當前的速度“。
  4. 第138頁中3.3.2小節中,應該是“以下程式碼可以讓一個View在100ms內向右移動100畫素”,向左是筆誤,應該是向右。

第四章

  1. 第196頁中提到” 下面我們來回答一個在 4.3.2 節中提到的問題: View 的測量寬/高和最終/寬高有什麼區別?“,改為”下面我們來回答一個在 4.3.2 節中提到的問題: View 的測量寬/高和最終寬/高有什麼區別?“
  2. 第207頁中” mColor = a.getColor(styleable.CircleView_circle_color, Color.RED); “,改為”mColor = a.getColor(R.styleable.CircleView_circle_color, Color.RED); “
  3. 第207頁中,“通過 recycle 方法來實現資源,這樣 CircleView 中所做的工作就完成了。“,改為”通過 recycle 方法來釋放資源,這樣 CircleView 中所做的工作就完成了。“
  4. 第176頁中提到” 如何得到 content 呢?可以這樣:ViewGroup content= findViewById(R.android.id.content)。“,改為”如何得到 content 呢?可以這樣:ViewGroup content= (ViewGroup)findViewById(android.R.id.content)。“
  5. 182頁中最下面的表格裡,左下方的“warap_content” 改為 “wrap_content”。
  6. 205頁中的程式碼有誤,改為:
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    final int paddingLeft = getPaddingLeft();
    final int paddingRight = getPaddingRight();
    final int paddingTop = getPaddingTop();
    final int paddingBottom = getPaddingBottom();
    int width = getWidth() - paddingLeft - paddingRight;
    int height = getHeight() - paddingTop - paddingBottom;
    int radius = Math.min(width, height) / 2;
    canvas.drawCircle(paddingLeft + width / 2, paddingTop + height/2, radius, mPaint);
    }
  7. 209中的程式碼的最後一段有誤,改為:
    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    final int paddingLeft = getPaddingLeft();
    final int paddingRight = getPaddingRight();
    final int paddingTop = getPaddingTop();
    final int paddingBottom = getPaddingBottom();
    int width = getWidth() - paddingLeft - paddingRight;
    int height = getHeight() - paddingTop - paddingBottom;
    int radius = Math.min(width, height) / 2;
    canvas.drawCircle(paddingLeft + width / 2, paddingTop + height / 2, radius, mPaint);
    }

第六章

  1. 在250頁中提到”android:endColo——漸變的結束色“,此處有筆誤,應該是”android:endColor——漸變的結束色“

第七章

  1. 第278頁中的程式碼有誤,改為:android:repeatMode=[“restart” | “reverse”]
  2. 第279頁中的提到“另一個是 android:repeatMode,它表示動畫迴圈的模式,有兩個選項: “repeat”和“reverse” ,分別表示連續重複和逆向重複。”,改為“另一個是 android:repeatMode,它表示動畫迴圈的模式,有兩個選項: “restart”和“reverse” ,分別表示連續重複和逆向重複。”

第九章

  1. 第336頁中提到” Service 的啟動過程從 ContextWrapper 的 startActivity 開始,如下所示。“,改為”Service 的啟動過程從 ContextWrapper 的 startService 開始,如下所示。“
  2. 第337頁中提到” 下面繼續看 ContextImpl 的 startActivity 的實現,如下所示。“,改為”下面繼續看 ContextImpl 的 startService的實現,如下所示。“

第十章

  1. 在372頁中提到“由於Android開發規範的限制,我們並不能在主執行緒中訪問UI控制元件“。此處有筆誤,應該是”我們並不能在子執行緒中訪問UI控制元件“。

第十三章

  1. 第468頁中提到“為了更好地對多外掛進行支援,需要合理地去管理各個外掛的 DexClassoader “,改為”為了更好地對多外掛進行支援,需要合理地去管理各個外掛的 DexClassLoader “。

第十五章

  1. 在502頁中提到“適當使用軟引用和軟引用”。此處有筆誤,應該是“適當使用軟引用和弱引用”。
  2. 在507頁中提到”一個合理的命令風格可以讓讀者閱讀原始碼就像在閱讀註釋一樣“,此處有筆誤,應該是”一個合理的命名風格可以讓讀者閱讀原始碼就像在閱讀註釋一樣“

說明

歡迎大家向我反饋勘誤資訊,在本文下面留言即可,我會更新在本文中。所有的勘誤將會在本書重印時予以修正,所以希望大家多多向我反饋勘誤資訊。

注意:本文正文以及留言中所有的勘誤都將在《Android開發藝術探索》第四次印刷時全部修正。
PS:最近很多同學問我哪裡可以購買到第四次印刷的書,其實目前市面上都是四次印刷以後的書了,只是京東等網站懶得更新圖書資訊而已,所以大家勇敢地購買吧!

書中原始碼下載

https://github.com/singwhatiwanna/android-art-res

  • 歡迎大家加入我的知識星球,一起學習交流
    cover
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述