20172303 2017-2018-2 《程序設計與數據結構》第11周學習總結

20172303 2017-2018-2 《程序設計與數據結構》第11周學習總結

教材學習內容總結

第23章 Android簡介

1.組件

Android應用程序組件共有四種:html

  • 活動(Activity):用戶交互的窗口。
  • 服務(Service):在後臺長時間運行的操做。
  • 廣播接受者(Broadcast receiver):一個監聽器。
  • 內容提供者(Content provider):管理要和其餘程序分享數據的一個組件。

2.意圖

  • 意圖(intent)是Android程序中的一條消息,用於要求程序執行某一動做。

3.清單

  • 每一個應用程序都必須包含一個XML形式的清單(manifest),其中應該包含如下幾項
  • 程序所需的最小的API Level
  • 程序的名稱
  • 用戶在觸碰應用程序圖標時打開的第一個活動窗口
  • 是否容許其餘應用程序調用該程序的組件
  • 用戶需保證的許可

第24章 初識Android

1、應用程序的調試

  • 1.日誌
    • 使用日誌消息是最簡單的調試應用程序的方法,Android中使用android.util.Log來記錄日誌消息。
  • 2.設置斷點
    • 在某一行單擊,選擇Run→Toggle Line Breakpoint便可設置斷點。或在某一行代碼的側邊欄單機也可設置斷點。
    • 使用Run→Debug來調試

2、應用程序結構

  • Project窗口中主要有兩個節點————app和Gradle Scripts。
    • Gradle Scripts節點包含了Gradle構件腳本。
    • app節點包含了manifests、java和res三個節點。

第25章 活動

1.活動的生命週期

  • onCreate():這個方法會在活動第一次被建立的時候被調用。這個方法用於對活動的初始化,如加載佈局,綁定事件等。
  • onStart():這個方法在活動由不可見到可見時被調用。
  • onResume():這個方法在活動準備好和用戶進行交互的時候被調用。
  • onPause():這個方法在系統準備去啓動或恢復另外一個活動時被調用。(咱們一般會在這個方法中將一些消耗CPU的資源釋放掉,以及保存一些關鍵數據,但這個方法的執行速度必定要快,不然會影響到新的棧頂活動的使用)
  • onStop():這個方法在活動徹底不可見的時候調用。它和onPause()方法的主要區別在於,若是啓動的新活動是一個對話框式的活動,那麼onPause()方法會獲得執行,而onStop()方法並不會執行。
  • onDestroy():這個方法在活動被銷燬以前調用。以後的活動狀態變爲銷燬狀態。
  • onRestart():這個方法在活動由中止狀態變爲運行狀態以前調用,也就是活動被從新啓動了。

2.修改應用程序圖標

  • res/drawable中保存一個jepg或png文件
  • 編輯manifest中的android:icon屬性,使用@drawable/圖像文件名稱來引用圖像。

第26章 UI組件

  • Android提供了許多的UI組件,你能按需構建應用的用戶交互界面
    • TextView:文本標籤
    • EditText:文本框,是TextView的一個子類,有副文本編輯能力
    • Button:按鈕,能夠按壓、點擊,由用戶完成一個動做
    • ImageButton:圖片按鈕
    • CheckBox:複選框,能夠做爲用戶使用的一個開關。當有一系列可供選擇的選項時,可以使用該控件
    • ToggleButton:帶有一個「燈泡亮暗」效果的開關按鈕
    • Spinner:下拉列表,容許用戶在多個選項中選擇一個
    • TimePicker:時間選擇器,能讓用戶輸入時間,有12小時和24小時模式
    • DatePicker:日期選擇器,能讓用戶輸入日期
    • ProgressBar:進度條,爲用戶提供某項工做的進度,好比後臺正在作的事情

教材學習中的問題和解決過程

  • 問題1:R類到底是什麼?
  • 問題1解決方案:剛開始翻書的時候不認真,後來在書上P254發現瞭解釋:R類是AS中看不到的一個通用類,能夠在app/build/generated/source目錄下找到它。每當添加、修改或者刪除資源時,都會從新生成R。R的做用是讓你能夠在代碼中引用一個資源。
  • 問題2:在看書的時候,對活動程序的結構仍是很模糊
  • 問題2解決方案:在本身真正建了一個程序以後就比較清楚了。
  • build:該目錄包含了自動生成的文件,這些文件包括了編譯設置項、R類等
  • libs:該目錄包含了開發Android應用所須要的庫文件
  • src:該目錄存放了應用的源代碼.java文件。默認狀況下,它包含了MainActivity.java文件,這個源代碼j有一部分是執行了你點擊應用圖標時啓動應用所須要功能
    • res:該目錄存放了全部的資源文件
      • drawable:該目錄存放了項目的drawable對象和一些圖片資源
      • layout:該目錄存放了各個界面的佈局文件
      • menu:該目錄存放了應用中設計的菜單對象
      • mipmap:該目錄存放了應用的主要圖片資源
      • values:該目錄存放了字符串、顏色等定義的資源集合
    • AndroidManifest.xml:該文件是描述應用基礎特性的文件,定義了每一個組件。
  • 問題3:對於程序的生命活動週期,有沒有什麼具體易懂的簡單例子?
  • 問題3解決方法:找到一篇博客android 活動的生命週期,裏面舉的例子就很是好,除此以外,博客裏還把整個活動週期分紅三個部分:
    • 完整生存期:onCreate()方法和onDestroy()之間,總共調用了6個方法。
    • 可見生存期:活動在onStart()方法和onStop()之間,總共4個方法,再加上從新運行的onRestart()方法,總共5個。
    • 前臺生存期:活動在onResume()方法和onPause()方法,總共2個方法。

代碼調試中的問題和解決過程

  • 問題1:剛剛下載好AS的時候,提示:
  • 問題1解決方法:以管理員的身份打開cmd,在裏面輸入netsh winsock reset後重啓便可。
  • 問題2:提示錯誤Error:Failed to find target with hash string 'android-27' in: E:\androidstudio\androidstudio\sdk
  • 問題2解決方法:產生該錯誤的緣由是所需的編譯版本缺失,解決方法是打開build.gradle文件,將裏面相應的版本下降下來便可。
  • 問題3:提示錯誤Error:(11) error: attribute 'android:roundIcon' not found.
  • 問題3解決方法:刪除AndroidManifest.xml裏的 android:roundIcon="@mipmap/ic_launcher_roun便可
  • 問題4:在使用git push的時候提示失敗,按教程用git pull仍是提示失敗
  • 問題4解決方法:失敗的緣由是碼雲上的東西和本地的東西有差異,因此不論是pull還push都會有問題。解決的方法是從新建一個項目,在建項目的時候取消勾選「使用Readme文件初始化這個項目」,

    以後就沒有什麼問題了。

代碼託管

上週考試錯題總結(正確爲綠色,錯誤爲紅色)

  • 錯題1:Abstract Data Types have which of the following object-oriented features?
    • A .information hiding
    • B .inheritance
    • C .polymorphism
    • D .message passing
    • E .all of the above
  • 緣由及理解狀況:抽象類數據類型既封裝了數據結構又封裝了操做數據結構的方法,因此能夠隱藏信息。所以,全部ADT都利用信息隱藏功能,以便數據結構不能直接從ADT外部操做,但不須要其餘面向對象的功能。
  • 錯題2:A simple linear list
    • A .is an example of a degenerate tree
    • B .is an example of a degenerate graph
    • C .is an example of a degenerate digraph
    • D .cannot be represented as a degenerate tree, graph or digraph
    • E .none of the above
  • 緣由及理解狀況:看題的時候沒有注意degenerate,以爲圖和樹都是非線性結構就選了D,但其實退化了的樹結構只有一個分支,就至關於一個簡單的線性結構。
  • 問題3:在Ubuntu中,使用vim編輯器時,想要移動光標,除方向鍵以外,還能夠依次使用hjkl鍵進行上下左右的移動。
    • A .true
    • B .false
  • 緣由及理解狀況:上下左右順序依次是kjhl,當時作題的時候只關注了是否是這幾個字母,沒想到還要一一對應,太坑了_(:з」∠)_
  • 問題4:在Linux Bash中,爲全部人對file1.txt文件添加寫入權限的命令是chmod o+w filel.txt 或者 chmod 666 filel.txt.
    • A .true
    • B .false
  • 緣由及理解狀況:chmod a+w filel.txt是給全部人加上可寫權限,包括全部者,所屬組,和其餘人。chmod o+w filel.txt是隻給其餘人加上可寫權限。

結對及互評

點評模板:

  • 博客中值得學習的或問題:
    • 優勢:從本週的博客中能夠很明顯地看出整個學習歷程
    • 問題:教材學習內容列的有些雜亂,能夠採用分點的方式來寫。
  • 代碼中值得學習的或問題:
    • 本週的代碼基本都是直接拷進去的,你們的代碼都比較相似。基本沒有問題。

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172322
    • 結對學習內容
      • 張昊然同窗教會了我如何往AS裏放代碼,在下AS的初期幫我解決了一些錯誤。

其餘(感悟、思考等,可選)

  • 沒想到在學期的期末還會接觸到這麼難啃的一塊骨頭,剛開始學的時候真的是懵的,並且走的很艱難,幸好這週三作了那幾個實驗,使我對這部分的知識更加清楚了。不過每一次打開虛擬機仍是頗有成就感的,如今我也是能作簡單APP的人了!

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 120/120 1/1 9/9
第二週 246/366 1/2 9/18
第三週 785/1121 2/4 15/33
第四周 615/1736 1/5 20/53
第五週 1409/2645 1/6 24/77
第六週 561/3206 1/7 20/97 再次搞清了一些本身有點含糊不清的概念
第七週 63/3269 1/8 15/112
第八週 2476/5745 3/11 90/201
第九周 824/6595 1/12 20/221
第十週 919/7514 2/14 20/241
第十一週 0/7514 3/17 40/281
  • 計劃學習時間:20小時
  • 實際學習時間:40小時
  • 改進狀況:本週很大一部分時間花在了安裝AS上,這個東西真的...當最後真的把它裝好,全部的程序都顯示綠色的OK時,不由有種想要熱淚盈眶的感受

參考資料

相關文章
相關標籤/搜索