1. 程式人生 > >20172324 2017-2018《程序設計與數據結構》第十一周學習總結

20172324 2017-2018《程序設計與數據結構》第十一周學習總結

編輯器 TP ret related sent for 本地 chomd lis

教材學習內容總結

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項目。
    app的三個節點分別是AndroidManifest.xml文件(AndroidMainfest.xml的清單文件用來描述應用程序,是必不可缺的。),Java應用程序和測試文件,res資源文件。

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的操作了。

代碼托管

上周考試錯題總結

  1. 下列哪一種被認為是抽象數據類型?
    A . array
    B . reference variable
    C . any of the primitive types (e.g., int, double, char)
    D . vector
    E . all of the above
    抽象數據類型包括數據結構和操作和訪問數據結構的方法。在這些列表中,只有向量將這兩者結合起來。該數組是一個數據結構,但沒有方法(例如插入方法或搜索方法),而引用變量和基本類型是數據,而不是數據結構。

  2. 抽象數據類型具有以下面向對象的特性?
    A . information hiding
    B . inheritance
    C . polymorphism
    D . message passing
    E . all of the above
    抽象數據類型封裝數據結構和操作數據結構的方法,以便保留信息隱藏。

  3. 一個簡單的線性表
    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
    一個簡單的線性列表從它的開始節點到它的結束節點,圖和有向圖都沒有起始節點但是樹有

  4. 數組是一種列表抽象數據類型
    A . true
    B . false
    數組是一種數據結構,可以用來存儲值列表,但是數組沒有已經實現的操作來執行列表操作,如添加到末尾或刪除給定值

  5. 所有抽象數據類型都定義為Java類
    A . true
    B . false

  6. Linux Bash中,可以使用chomd 777 pdds命令修改文件pdds的權限,並使得其擁有者、擁有者所在的組和其他用戶都擁有全部權限。
    A . true
    B . false
    chmod 777 pdds,不是 chomd 777 pdds………..????????好吧

  7. Linux Bash中,使用rm –r /dky/D命令強制刪除/dky目錄下所有D開頭的文件。
    A . true
    B . false
    rm –f /dky/D

  8. Linux Bash中,查找五天之內src目錄中刪除的文件的命令是find /src/ -ctime -5。
    A . true
    B . false
    Linux find命令
  9. Linux Bash中,使用tar命令把文件dky打包成dky.tar的命令是tar –c dky.tar dky 。
    A . true
    B . false
    tar –cf dky.tar dky

  10. 在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《程序設計與數據結構》第十一周學習總結