2018年學習總結博客總目錄:第一週 第二週 第三週 第四周 第五週 第六週 第七週 第八週 第九周 第十週 第十一週
html
1.概覽:Android發展介紹:Android 操做系統是一種多用戶的Linux系統,它使用Java做爲編程語言。Anroid4.4以前,其應用程序在Dalvik的虛擬機上運行,Android5.0及之後版本,其源代碼使用ART(Android RunTime)來執行。Android4.4是Dalvik和ART的轉折點和分水嶺。
APK表示應用程序包,它是一個基本的zip文件,可以使用unzip或Winzip來解壓縮。apk文件能夠在一臺物理設備或模擬器上運行,部署一個Android應用程序很容易。java
Android編程中另外一重要概念是意圖(intent):一條消息,發送給系統或另外一個應用程序,以要求執行一個動做。node
每一個應用程序必須有一個清單(manifest),以描述該應用程序,清單以XML文件的形式給出,具體內容結構見下面闡述。linux
集成開發環境(IDE),這裏講使用Android stutio這款IDE軟件,這裏講述的其的下載安裝及配置以及建立一個應用程序,這裏將再也不進行講述。android
應用程序結構:Project窗口包括兩個主要的節點:app和Gradle Scripts。app節點包含了應用程序中全部的組件。Gradle Scripts節點包含Gradle構建腳本,以供構建Android項目。
app節點下包含以下3個節點:c++
(1)manifests,其中包含了AndroidManifest.xml。這是一個控制文件,用來描述應用程序。不一樣的參數表示不一樣的含義,例如「manifest」爲根節點,描述了package中的全部內容;「application」元素能夠包含application的一些全局和默認的屬性,如標籤、icon、主題等等;「activity」是與用戶交互的主要工具,一般包含一個或多個activity元素,描述App中的各類活動。這一點在後面的任務中還有體現。編程
(2)java:包含了全部Java應用程序和測試類。vim
(3)res:存放了應用程序使用到的各類資源,如xml界面文件、圖片、數據等。一般包含drawable子目錄、layout子目錄、values子目錄三個。drawable:存放分辨率不一樣的圖片。layout:存放xml界面佈局文件,主要用於顯示用戶操做界面。values:存放不一樣類型的數據,如string、array等。c#
特殊說明(R類):R類的做用是讓你可以引用代碼中的一個資源。數組
1)layout下中的andoid:id、android:text等資源信息等
2)string對應的字段是res/values/strings.xml中的配置項信息(自動生成的,不須要認爲的修改R類,包含id也同樣)。
3)@color查找顏色:color對應的字段是res/values/colors.xml中的配置項信息(自動生成的,不須要認爲的修改R類,包含id也同樣)。
4)@drawable查找圖片:只須要把png/jpeg/gif文件拷貝到新建的/res/drawable目錄下,或者拷貝到工程新建的默認drawable-xx目錄下
5)@dimen某個組件尺寸定義:須要在res/values/目錄下新建一個dimen.xml文件.
apk文件:APK是AndroidPackage的縮寫,即Android安裝包(apk)。APK是相似Symbian Sis或Sisx的文件格式。經過將APK文件直接傳到Android模擬器或Android手機中執行便可安裝。
調試應用程序:設置斷點,並經過Run > Debug app 調試程序。
Android SDK及建立虛擬設備以及物理設備的鏈接都已實踐,再也不將其流程。
1.活動的含義:活動是包含了用戶界面組件的一個窗口,用戶能夠和這些用戶界面組件交互,啓動一個活動,每每意味着要顯示一個窗口。一個典型的Android應用程序,都是從啓動一個活動開始的,也就是說啓動一個活動就意味着顯示一個窗口。
2.主活動:應用程序所建立的第一個窗口,叫作主活動(main activity),它充當應用程序的入口點。要讓一個活動成爲一個主活動,其intent-filter元素必須包含MAIN的action和LAUNCHER的category。
5.使用Android資源
Android內容很豐富,它帶有大量的資源可供使用。要瀏覽可用資源,在Android stutio打開應用程序清單,輸入「@Android:」,後面跟着Ctrl+space組合鍵,從而填入屬性值,便會顯示出資源的列表。
startActivity(intent)
,其中intent是Android.content.Intent類的一個實例。@Override public boolean onTouch(View arg0, MotionEvent event) { Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("message", "Message from First Screen"); startActivity(intent); return true; }
這一實踐已在實驗過程當中完成,這裏不在進行重複。
7.活動相關的意圖
經過傳遞給意圖一個活動類而構造的意圖,叫作顯式意圖。也能夠創做一個隱式意圖,在這種狀況下咱們沒有指定一個意圖類,相反,咱們給Intent類的構造方法傳遞一個動做,讓系統來決定啓動哪一活動,若是有多個活動能夠處理,系統會讓用戶來進行選擇。
1.Android SDK提供了叫做微件(widget)的衆多簡單的和複雜的組件。微件有不少例子,好比按鈕、文本字段、進度條等。此外,還需選擇一個佈局來放置UI組件。微件和佈局,都在android.view.View裏實現。
2.使用Android Stutio UI工具
3.Toast
4.通知
NSNotification *notification = [NSNotificationnotificationWithName:@"refresh" object:niluserInfo:dictplist];
[[NSNotificationCenter defaultCenter] postNotification:notification];
(void)refresh:(NSNotification *)text { NSLog(@"%@",text.userInfo); self.dic = [[NSMutableDictionary alloc] initWithDictionary:text.userInfo]; NSLog(@"-----接收到通知------"); [self.leftTableView reloadData]; [self.rightTableView reloadData]; }
問題1:關於XML文件的具體的用法及各項的含義
問題1解決方案:查找相關資料內容,對書上的XML的內容進行了一些拓展補充,參見下面:
XML文件結構:
<?xmlversion="1.0"encoding="utf-8"?> <manifest> <application> <activity> <intent-filter> <action/> <category/> </intent-filter> </activity> <activity-alias> <intent-filter></intent-filter> <meta-data/> </activity-alias> <service> <intent-filter></intent-filter> <meta-data/> </service> <receiver> <intent-filter></intent-filter> <meta-data/> </receiver> <provider> <grant-uri-permission/> <meta-data/> </provider> <uses-library/> </application> <uses-permission/> <permission/> <permission-tree/> <permission-group/> <instrumentation/> <uses-sdk/> <uses-configuration/> <uses-feature/> <supports-screens/> </manifest>
結構分析:
三、第三層(Activity):屬性
四、第四層(intent-filter)
五、第四層(meta-data)
六、第三層(activity-alias)屬性
七、第三層(service)
八、第三層(receiver)
九、第三層(provider)屬性
十、第三層(uses-library)
十一、第一層(supports-screens)
十二、第二層(uses-configuration )與(uses-feature)性能都差很少
1三、第二層(uses-sdk )
1四、第二層(instrumentation )
1五、(permission)、(uses-permission)、(permission-tree )、(permission-group )區別~
問題2:活動的生命週期的具體流程,書上的講解可以理解,但書上的活動流程不齊全,並且不夠簡練。
問題2解決方案:下面的表格對每一個方法更詳細的描述和在活動的整個生命週期中的定位。
這七個方法定義了活動的整個生命週期。有三個嵌套的循環,你能夠經過這七個方法監視:
活動的整個生命時間,從第一次調用onCreate()開始直到調用onDestroy()結束。一個活動在onCreate()中作全部的「全局」狀態的初始設置,在onDestroy()中釋放全部保留的資源。舉例來講,有一個線程運行在後臺從網絡上下載數據,它可能會在onCreate()中建立線程,在onDestroy()中結束線程。 活動的可視生命時間,從調用onStart()到相應的調用onStop() 。在這期間,用戶能夠在屏幕上看見活動,雖然它可能不是運行在前臺且與用戶交互。在這兩個方法之間,你能夠保持顯示活動所須要的資源。舉例來講,你能夠在onStart()中註冊一個廣播接收者監視影響你的UI的改變,在onStop() 中註銷。由於活動在可視和隱藏之間來回切換,onStart()和onStop() 能夠調用屢次。 活動的前臺生命時間,從調用onResume()到相應的調用onPause()。在這期間,頻繁地在重用和暫停狀態轉換——例如,當設備進入睡眠狀態或一個新的活動啓動時調用onPause(),當一個活動返回或一個新的意圖被傳輸時調用onResume()。所以,這兩個方法的代碼應當是至關輕量級的。
問題1:在進行修改應用圖標時,插入圖片時老是會出現錯誤,不管是png類型圖片或是jpg類型圖片,老是出現紅線提示錯誤。
問題1解決方案:老是插入失敗,後來問王志偉同窗,他說的是他的能夠改,而後他又幫我試了幾回,最後也是能插入了,這裏以前出錯的緣由是圖片的名稱的首個字符爲數字,它要求的必須是英文字母才能進行修改,換了張圖片之後就能夠改了。
問題2:關於打開文件這裏的一個問題,就是從網站上下載下來的課本上的代碼的導入問題。
問題2解決方案:這裏參見實驗四博客中內容,這也算是書上的內容,也是課本上學習遇到的問題,關於這裏修改了好久才改出來的。博客連接:20172302 實驗四Android程序設計實驗報告
1.A collection in the items stored there are of different types is referred to as a(n) ________ type.
A . homogeneous
B . heterogeneous
C . dynamic
D . abstract
E . vector
解析:異構這個術語意味着元素是不一樣的類型。在Java中,類能夠存儲異構類型,例如一個實例數據多是int,另外一個是String,第三個是double。另外一方面,數組是同構類型,由於數組中存儲的每一個元素都是相同的類型。
2.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外部操做數據結構,而不須要其餘面向對象的特性。
3.In a linked list in Java
A . the link is an object
B . the link is a node
C . the link is a reference
D . the link is an int
E . the link is a class
解析:在鏈表中,鏈節是對下一個節點的引用。經過檢查引用的內容來「取消引用」連接。節點是對象。對象是類的實例。節點的數據部分極可能是int,以及任何其餘類型的數據。
4.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
解析:一個簡單的線性列表被指向,從它的開始節點到它的結束節點。圖和有向圖都沒有起始節點,可是樹有:樹的根。所以,一個簡單的線性列表就是一個退化樹的例子,它有一個分支因子爲1,每一個節點只有一個繼承,從根開始,到單葉結束(結束節點)。
5.An Abstract Data Type is a data structure, that is, it is the listing of the instance data and the visibility modifiers for those instance data.
A . true
B . false
解析:抽象數據類型包括抽象數據結構,但也包括訪問和操做抽象數據結構的方法。
6.A linked list that contains 6 Nodes will have 6 reference pointers.
A . true
B . false
解析:爲了訪問鏈表,至少須要有第7個引用指針,一個引用鏈表中的第一個項的引用指針。
7.Trees and graphs, because they are dynamic in nature, cannot be implemented using Java arrays.
A . true
B . false
解析:任何給定的有一個固定大小的數組,所以最大電流的大小(節點數)的樹或圖僅限於其底層數組的大小,能夠分配一個更大的數組,將原始數組中的元素複製到新數組,並繼續以這種方式實現擴張。這種技術之因此成功,是由於Java數組是對象,訪問全部對象的機制是經過引用實現的。在大多數其餘語言(如C、c++、c#、Pascal等)中,數組都不是對象,所以這種技術將會失敗。
8.A bi-directional list is an example of a non-linear data structure.
A . true
B . false
解析:雖然雙向列表在每一個節點中都有多個連接,可是當您繪製雙向列表的圖片時,它仍然是線性的。
9.Linux Bash中,使用sudo apt-get upgrade
命令能夠更新系統。
A . true
B . false
10.Linux Bash中,可使用chomd 777 pdds命令修改文件pdds的權限,並使得其擁有者、擁有者所在的組和其餘用戶都擁有所有權限。
A . true
B . false
解析:chmod 777 pdds,不是 chomd 777 pdds ,這道題目沒看清楚。
11.Linux Bash中,使用apt-get search tree命令來查找是否系統裝有軟件tree。
A . true
B . false
解析:應使用apt-cache search tree
12.Linux Bash中,di1和di2是兩個已存在的文件夾,則命令mv di1 di2表示將文件di1移動至文件di2內。
A . true
B . false
解析:網上查到的資料:mv 目錄名 目錄名 >>目標目錄已存在,將源目錄移動到目標目錄;目標目錄不存在則更名.
參考連接:Linux mv命令
13.Linux Bash中,查找五天以內src目錄中刪除的文件的命令是find /src/ -ctime -5。
A . true
B . false
解析:參考連接:Linux find命令
14.Linux Bash中,使用grep查找當前src目錄下全部包含main函數的文件,並要求顯示出現行號的命令是grep –n main /src
A . true
B . false
解析:應該使用的是grep –rn main /src
.
15.在Ubuntu中,使用vim編輯器時,想要移動光標,除方向鍵以外,還能夠依次使用hjkl鍵進行上下左右的移動。
A . true
B . false
解析:上下左右順序依次是kjhl
16.在Linux Bash中,用ls命令查看當前目錄下文件並能夠顯示子目錄下文件的參數是-R。
A . true
B . false
解析:參考連接:Linux ls命令
17.在Linux Bash中,man -k命令與apropos命令等價。
A . true
B . false
解析: 二者等價。
博客中值得學習的或問題:本週博客總結的比較認真,課本問題記錄的很詳細精確,可多些對教材內容總結,錯題改正也可增長對問題的理解。
結對學習內容
共同窗習有關Android這一塊內容以及Android的實驗的進行。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 157/157 | 1/1 | 15/15 | |
第二週 | 382/539 | 1/2 | 16/31 | |
第三週 | 317/856 | 2/4 | 15/46 | |
第四周 | 996/1852 | 1/5 | 24/70 | |
第五週 | 578/2330 | 1/6 | 16/86 | 這周對上週第七章的學習有了更深的理解 |
第六週 | 475/2805 | 1/7 | 14/100 | 學習了數組方面的相關知識 |
第七週 | 629/3434 | 1/8 | 14/114 | 關於繼承有必定認識 |
第八週 | 1567/5001 | 3/11 | 25/141 | |
第九周 | 428/5429 | 2/13 | 17/158 | 瞭解了遞歸內容並學習了IO流相關知識 |
第十週 | 893/6322 | 2/15 | 16/174 | 學習集合方面的知識 |
第十一週 | 0/6322 | 3/18 | 25/199 | 瞭解Android方面內容以及Android Stutio 的使用 |