天天看點

安卓學習筆記(1)

【2019-8-27 11:12】從昨天晚上開始決定進軍安卓軟體開發領域。

從昨天晚上開始下載下傳安卓編譯器Android Studio。我終于開始了自己的安卓道路。然而前進的道路并不是一帆風順的。在下載下傳編譯器的道理上,我首先參考了《第一行代碼》的百度網盤位址。然而,pandownload下載下傳下來的是一個不知道是什麼東西的鬼玩意。那是個什麼downloading檔案,讓我直接删掉了。就這樣昨天的成果全部以失敗告終。

今天早上,決定再次下載下傳安卓編譯器。終于經過深思熟慮,挑選了一個大佬的可以供使用的部落格:https://blog.csdn.net/siwuxie095/article/details/53431818#commentBox

我也是以灰常開心。

但是,彩虹之後有風雨。在重裝之後的電腦我已經搞不清java環境在哪裡了。是以就重新下載下傳,也算跟着教程走。在下載下傳jdk的過程中也曆盡艱難。

1.在配置java環境的過程中,必須嚴格注意路徑問題,我是以失敗了一次,并且找了一個多小時甚至兩個小時的bug。自己路徑不正确,任何教程也拯救不了你。我覺得有可能是因為路徑是java環境配置中的一個重要參數吧。

上面是我總結的第一個教訓。現在呢,我的java環境配置好了。

【18:33】我承認,我真的還不算一個開發者,因為我連編譯器都需要找教程來下,都是英語惹的禍。哎!

【20:24】在教程的幫助下,我稀裡糊塗的把編譯器下載下傳好了。但是,我并沒有對安卓編譯器進行漢化,是以這些英語給我造成了很大的困擾,但是沒辦法,誰讓這編譯器是國外的程式員發明的呢?隻能硬着頭皮讀。

我終于在閱讀《第一行代碼》過程中發現,對我來說,最大的困難在于,因為編譯器版本不同,我無法完全按照書去學習。以至于我必須尋找新的教程學習。畢竟,我并不怎麼高的智商和經驗導緻我必須尋找一個“老師”。

https://blog.csdn.net/shengmer/article/details/78866918這個教程是幫助我稀裡糊塗下載下傳好編譯器的教程。

【8-28 16:20】給自己定一條原則,不會的技術上網或者在書上學;不會的單詞查。

【16:46】我終于在建立一個工程以後,把gradle建構完了。耗時10分鐘左右。截圖為證:

安卓學習筆記(1)

  【16:50】在解決完建立工程以後,我還要繼續憑借自己的嘗試去編寫第一行helloworld的程式。而且那個sync我真的不知道是啥!接下來,helloworld程式需要我去嘗試一下編寫和運作了。

【8-29 10:06】這個...helloworld我書上的内容大體看完了,基本大體思路還是可以了解的。但是在運作的時候出現問題了。比如:虛拟機不存在,在手機上出現error installing APK的錯誤,讓我很尴尬。隻能有一種解決辦法,就是上網搜。哎,但是事情并不是這麼簡單,現在電腦不能上網,隻能用手機上網了。

【9-25 14:11】因為安卓選修課程要求作業是開發一款APP,是以這個巨大的任務已經從興趣轉化成了強制的事情。現在,在我的勇敢的嘗試和胡亂點(我想親切的稱之為暴力操作)之下,安卓編譯器以他完美的下載下傳插件的機制解決了模拟器的安裝問題;下一步我想做的是:在手機上運作第一行代碼。

【14:23】好的,我宣布,安卓第一行代碼helloworld在自己手機上運作成功。當然這沒什麼驕傲的。和未來要接觸和實踐的知識相比,這隻是冰山一角。但是這意味着,龍哥對安卓軟體的探索之路起步了!

【16:58】剛剛我用自己的大頭照做APP的圖示,之後跑helloworld。我相信畢竟有了ACM程式設計的基礎,學習面向對象還是不難的。分享一下:學習安卓的幾個原則:

   1.開發驅動學習

   2.探索激發興趣

   3.工程開發需要有規劃,分階段

同時,因為這個大頭照,我發現安卓系統真的是非常強的一個系統:在應用程式圖示這一點上,安卓編譯系統能夠把這麼大的圖檔壓縮成很小的一部分之後展示。我本來以為會隻是展示一部分,我真是低估谷歌公司那幫神奇的程式員了。

【19:36】本來想把自己寫的helloworld通過qq發送給别人在别人手機上運作一下,沒想到啊,竟然不能成功!可惡可惡。這個是個長遠的問題,需要去嘗試解決。

【10-9 8:20】跟着《第一行代碼》大體浏覽完了intent類的使用,Toast的使用等等,了解完這些類的用法。但是到達活動這個地方的時候,遇到了瓶頸。難點是活動生命周期的各種了解。下面開始詳細的來寫:

(1)第一對:onCreate():每個活動都會重寫這個方法,會在活動第一次被建立的時候調用。這個方法中應該完成活動的初始化操作,比如加載布局和綁定事件。

onDestroy():活動調用了這個方法以後,活動的狀态變成了銷毀的狀态。【這是活動在銷毀之前調用的最後一個方法】

這兩個方法之間經曆的是完整的生存期。

(2)第二對:onStart():活動由不可見變成可見的時候調用。

onStop():活動由可見變成完全不可見的時候調用。

這兩個方法之間經曆的是可見生存期。

(3)第三對:onResume():這個方法在活動準備和使用者進行互動的時候調用。此時活動一定處于棧頂位置,并且處于運作狀态。【調用了此方法後,活動開始進入和使用者的互動狀态】

onPause():調用此方法後,活動就停止了和使用者進行互動的狀态。

這兩個方法之間經曆的是前台生存期。期間,活動總處于運作狀态,并且可以和使用者進行互動。

(4)onRestart():一個活動從停止狀态到運作狀态中間調用的方法。相當于重新啟動一個停止的活動。

下面再科普:活動的四個狀态(根據存在于傳回棧的位置和是否可見定義)

運作狀态(在棧頂,可見)>>>-----不在棧頂位置---->>>暫停狀态(不在棧頂,可見)>>>-----不可見----->>>停止狀态(不在棧頂,不可見)>>>-----退出棧---->>>銷毀狀态(不在棧)

【9:56】總結一句話:活動的各種狀态,把握兩個點:是不是在棧頂,是不是可見。棧頂活動是可見活動的子集。

【16:56】活動的啟動模式。在結束了活動生命周期的學習以後,我進入到了這個章節。

活動啟動模式一共四種standard,singleTop,singleTask,sinleInstance。

(1)standard模式:活動預設的啟動模式。在聲明(顯示指定)之前的啟動模式就是這個模式。Android使用傳回棧管理活動。

使用此模式活動的特點:不管是否在傳回棧中存在,每次啟動這個活動都會建立一個新的執行個體。

【建立了多少執行個體就需要通過多少back健退出】

(2)singleTop模式:如果發現該活動是傳回棧棧頂的活動,就直接使用,不再建立新的執行個體。

(3)singleTask模式:每次啟動新活動,檢查傳回棧中有沒有這個活動,如果有直接使用,如果沒有再建立新的執行個體。并且把傳回棧中這個活動上面的活動統統出棧。

(4)singleInstance模式:最特殊最複雜的一種。我在網絡上學習了一下,根據https://blog.csdn.net/mr_jingfu/article/details/79077613和https://blog.csdn.net/weixin_40855673/article/details/80630634的大體介紹,可以這樣去了解這個模式:

    我暫時了解到了這個程度:就是每新啟動一個活動(之前的任務棧中不存在時),都會為這個活動建立一個傳回棧或者叫做任務棧。

   但是我看到網上說,這個啟動模式有坑,不太懂,但是我暫時就了解到這裡吧,畢竟還是小白。

【10-14 19:19】在運作singleTop模式的時候,出現了一個問題(https://blog.csdn.net/shenggaofei/article/details/80458314)。然後我從網上找了找問題解決辦法。正在實驗。因為從今天上午開始,啟動一個活動變成了一件很難很漫長的事情。太煩人了...

【19:42】這麼長時間,15分鐘,一直在installing apk。是以決定再來一次!

【19:53】又一直在installing apks8分鐘。宣告了第一次實驗解決問題失敗了。

【20:01】又在嘗試連結中的第二種方法。

【20:07】天哪,運作到4分鐘多又出現了那種錯誤,installation failed with message null。是以這次我決定:上面連結中的兩種方法一起使用,如果再失敗就隻能另劈途徑了。

【20:12】然而,又開始了漫長的installing apks的日子...

【20:18】依然以失敗告終...難受啊。

【10-16 8:30】又根據這個連結:(連結https://blog.csdn.net/weixin_30527143/article/details/97419597)開始了一次排查,看看是不是虛拟機當機造成的installing apks...一分鐘,我的天解決啦?!感謝部落客。俺謝謝您啦!

【9:04】我咬文嚼字看書。發現:每個應用程式都有自己的傳回棧或者稱作管理棧。我想知道一個程式中的不同java活動是不是存在于同一個傳回棧裡,就可以印證這句話了。經過測驗,發現同一個app在前三種啟動模式隻有一個傳回棧。對于singleInstance模式,經過測驗發現,指定為這個模式的活動,會在一個app中新開啟一個傳回棧來管理這個活動。

【10:35】留一個連結是用來打包apk的:https://blog.csdn.net/hefeng6500/article/details/79869647