20172324 2017-2018《程序設計與數據結構》第十一周學習總結
教材學習內容總結
Android簡介
- 概覽:android操作系統是一種多用戶的Linux系統,每個應用程序作為單獨的Linux進程中的一個不同的用戶而運行。Android使用Java語言但是不在Java虛擬機上運行。如果想了解更多的內容,可以看看Android的構建過程
- 應用程序開發簡介:
4種Android應用程序組件
(1) 活動(Activity):包含用戶交互組件的一個窗口。
(2) 服務(Service):在後臺長時間運行的操作。
(3) 廣播接收者(Broadcast receiver):一個監聽器,負責對系統或應用程序聲明做出響應。
(4) 內容提供者(Content provider):管理要和其他應用程序分享的一組數據的一個組件。
Android編程中另一重要概念是意圖和清單(以xml文件的形式給出)
Android版本:都是以好吃的命的名
- 在線資源(略)
應該使用哪個版本的Java(略)
初始Android
- 下載和安裝Andriod Studio
- 創建應用程序
如果as找不到JDK的正確位置,單擊File>Project Structure>SDK Location,然後瀏覽以找到JDK的位置。 - 在模擬器上運行應用程序
- 應用程序結構:project窗口有兩個主要的節點,app和Gradle Scripts。app節點包含了應用程序中所有的組件。Gradle Scripts節點包含Gradle構建腳本,以供構建Android項目。
R文件
- 調試應用程序:最簡單的是日誌方法,任何異常的拋出包括棧軌跡都會顯示在LogCat中;設置斷點,在任意一行上單擊,選擇run>toggle line breakpoint,即可在代碼中添加一行斷點,然後擇run>debug app
- 刪除支持的庫
活動
- 活動的含義:活動是包含了用戶界面組件的一個窗口,用戶可以和這些用戶界面組件交互,啟動一個活動,往往意味著要顯示一個窗口。一個典型的Android應用程序,都是從啟動一個活動開始的,也就是說啟動一個活動就意味著顯示一個窗口。
- 修改應用程序圖標
啟動另一個活動:用戶從主屏幕選擇APP圖標時,祝活動通過系統自身而啟動,再擁有多個活動的應用程序中,很有可能需要啟動另一活動,這時便可以通過調用startActivity方法直接做到。如
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;
}
啟動另外的活動(Activity)
UI組件
- 使用Android Stutio UI工具:使用UI工具所做的事,都會反應到布局文件中去,以XML元素的形式體現出來。
- 使用基本組件,OnCreate方法是一個生命周期方法,當創建應用程序的時候會調用它,onCreateOptionsMenu方法初始化了活動的選項菜單的內容。要讓菜單顯示,他必須返回為true。
- Toast:Toast是一個小的彈出對話框,用於顯示一條消息作為給用戶的反饋,是暫時的。通過靜態方法makeText()創建出一個Toast對象,然後調用show()將Toast顯示出來
makeshow()方法需要傳入三個參數。
第一個參數是Context,也就是Toast要求的上下文,由於活動本身就是一個Context對象,因此直接傳入FirstActivity.this即可
第二個參數是Toast顯示的文本內容
第三個參數是Toast顯示的時長,有兩個內置常量可以選擇Toast.LENGTH_SHORT和Toast.LENGTH_LONG
通知:通知是出現在狀態欄裏的一條消息,和Toast不同,通知是持久的,並且將保持顯示,直到關閉它或者是關閉設備。創建通知
NSNotification *notification = [NSNotificationnotificationWithName:@"refresh" object:niluserInfo:dictplist];
可以這樣理解:當你想在A activity中啟動另一個B activity,那麽你可以選擇兩種情況[立即啟動或延時啟動]:
1.通過intent配置需要啟動的B activity,然後調用startActivity()方法,讓他立即執行啟動操作,跳轉過去
2.另一種情況是,你雖然想啟動另一個B activity,可是你並不想馬上跳轉到Bactivity頁面,你想靜等5分鐘之後再跳轉到Bactivity,那麽你可以通過PendingIntent來實現,PendingIntent可以包裝第1步中的intent,然後通過AlarmManager這個定時器,定制5分鐘之後啟PendingIntent,實現這種延時操作
可以看看這個博客寫了很多關於PendingIntent的解釋PendingIntent詳解
教材學習中的問題和解決過程
- 問題1:當我直接將包復制粘貼到文件中後,Android裏有文件,但是不能運行,右小角沒有又可以運行的綠色提示
問題1解決方案:不能把整個安裝包復制粘貼,正確的方式是現在Android中new一個project,然後打開路徑中的文件包,先導入AndroidManifest.xml文件,然後是src文件中的mainactivity文件,最後是res布局文件。
- 問題2:menu文件報紅,R文件報紅
問題2解決方案:menu文件主要是因為沒有導入,但是如果想自己新建的話要註意menu布局文件要在menu文件夾地下創建才行,應該先在res文件夾右鍵,然後選擇New>Android resource directory,出現界面後在Resource type下拉欄選擇menu。接著在menu文件夾下右鍵,New>Menu resource file之後輸入文件名就可以了 R文件報紅的話主要是因為剛剛導入的xml文件導致的,大多都是圖片的命名,一定要註意的圖片的格式,不要將圖片的名字改為xx.png,實際上還是沒有改變圖片的格式。解決辦法是
build-rebuild project不行的話再試試clean project
代碼調試中的問題和解決過程
問題1:不能git到碼雲上,在張昊然同學發的第12步就出現了請求被拒絕的error,我到底做錯了什麽,idea和as都喜歡拒絕我
此處錯誤提示
androidstudio can’t start git.exe
解決方案1:
這種問題可能是有兩種:git.exe路徑設置錯誤,或者沒有安裝git
然而我安裝了的,於是我換了一個博客 Push rejected: Push to origin/master was rejected打開Git Bash,然後進入相應的目錄,然後敲git命令
git pull origin master --allow-unrelated-histories
你就可以將本地倉庫中的推送到github中,使用如下的git命令
git push -u origin master
問題2:
error running:please select Andriod SDK
問題2解決方法:說是由於Android Studio異常關閉,使得某些配置文件損壞,因此需要在線更新SDK才能恢復被損壞的文件。解決辦法如下:
首先依次選擇主菜單“File”——“Settings”,然後依次展開“Appearance & Behavior”——“System Settings”——“Android SDK”,在右邊的設置界面編輯SDK的路徑。如下圖所示,單擊SDK目錄輸入框右邊的“Edit”鏈接(紅框標註):
單擊“Edit”鏈接之後打開SDK的設置界面後目錄保持不動,點擊next》next後等待Android Studio下載成功後回到Android Studio的主界面,等待重編完成,即可正常執行Run app的操作了。
代碼托管
上周考試錯題總結
下列哪一種被認為是抽象數據類型?
A . array
B . reference variable
C . any of the primitive types (e.g., int, double, char)
D . vector
E . all of the above
抽象數據類型包括數據結構和操作和訪問數據結構的方法。在這些列表中,只有向量將這兩者結合起來。該數組是一個數據結構,但沒有方法(例如插入方法或搜索方法),而引用變量和基本類型是數據,而不是數據結構。抽象數據類型具有以下面向對象的特性?
A . information hiding
B . inheritance
C . polymorphism
D . message passing
E . all of the above
抽象數據類型封裝數據結構和操作數據結構的方法,以便保留信息隱藏。一個簡單的線性表
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
一個簡單的線性列表從它的開始節點到它的結束節點,圖和有向圖都沒有起始節點但是樹有數組是一種列表抽象數據類型
A . true
B . false
數組是一種數據結構,可以用來存儲值列表,但是數組沒有已經實現的操作來執行列表操作,如添加到末尾或刪除給定值所有抽象數據類型都定義為Java類
A . true
B . falseLinux Bash中,可以使用chomd 777 pdds命令修改文件pdds的權限,並使得其擁有者、擁有者所在的組和其他用戶都擁有全部權限。
A . true
B . false
chmod 777 pdds,不是 chomd 777 pdds………..????????好吧Linux Bash中,使用rm –r /dky/D命令強制刪除/dky目錄下所有D開頭的文件。
A . true
B . false
rm –f /dky/D- Linux Bash中,查找五天之內src目錄中刪除的文件的命令是find /src/ -ctime -5。
A . true
B . false
Linux find命令 Linux Bash中,使用tar命令把文件dky打包成dky.tar的命令是tar –c dky.tar dky 。
A . true
B . false
tar –cf dky.tar dky在Ubuntu中,使用vim編輯器時,想要移動光標,除方向鍵之外,還可以依次使用hjkl鍵進行上下左右的移動。
A . true
B . false
上下左右順序依次是kjhl
結對及互評
寫在評論裏
點評過的同學博客和代碼
- 本周結對學習情況
- 21我們兩個的Android都崩了好巧好巧,最後都好了好巧好巧
其他(感悟、思考等,可選)
是的
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 1/2 | 20/20 | |
第二周 | 329/500 | 2/3 | 18/38 | |
第三周 | 619/1000 | 2/5 | 22/60 | |
第四周 | 817/1734 | 2/7 | 38/98 | |
第五周 | 674/2408 | 1/9 | 30/128 | |
第六周 | 1136/2870 | 2/10 | 30/158 | |
第七周 | 1000/3791 | 1/11 | 32/190 | |
第八周 | 2662/6453 | 2/13 | 48/238 | |
第九周 | 782/7573 | 2/15 | 48/238 | |
第十周 | 201/7773 | 1/17 | 48/238 | |
第十一周 | idea崩了....代碼量回到之前的一半了?哭 | 2/18 | 48/238 |
參考資料
- 新人求助 R文件 報錯 紅色
- 打開Android Studio報錯“Error running ***: Please select Android SDK”
- Android Studio 新手使用問題及解決方法整理
- AndroidStudio應用調試技巧(上)
- Push rejected: Push to origin/master was rejected
- PendingIntent詳解
- 啟動另外的活動(Activity)
20172324 2017-2018《程序設計與數據結構》第十一周學習總結