第一行代碼讀書筆記

第一章

不同于eclipse吸耿,AS的方便的地方就是谷歌已經(jīng)將東西都集成好了氓癌,例如JDK和安卓的SDK绒障,之前看過(guò)一會(huì)第一版用eclipse的時(shí)候就踩了挺多的坑,于是果斷轉(zhuǎn)向第二版酝碳。接下來(lái)是我在看第一章的時(shí)候遇到的坑已經(jīng)一些感想和筆記矾踱。

1,安裝AndroidStudio击敌。

下載的話介返,途徑很多,可以官網(wǎng),不過(guò)需要翻墻圣蝎。需要科學(xué)上網(wǎng)刃宵。不想去官網(wǎng)的話,不妨下我云盤里面的

鏈接:https://pan.baidu.com/s/1HInD24u62j0GNUG2TIGwUw 密碼:c3wh

下載后安裝的一些細(xì)節(jié)我就不贅述了徘公。按照作者的步驟牲证,讀到這里應(yīng)該是不會(huì)報(bào)錯(cuò)的。但我在這里遇到了一個(gè)問(wèn)題关面,我發(fā)現(xiàn)


@override

這一行下面會(huì)有紅線坦袍,顯示有錯(cuò)誤,下面還有相關(guān)信息

Failed to resolve:com.android.support:appcompat-v7.....  

我剛開始以為是我環(huán)境沒(méi)裝好等太,或者是SDK版本還沒(méi)有下完全捂齐,于是重新安裝AS,還是沒(méi)能解決缩抡,最后在某個(gè)大神的博客中找到了答案

https://blog.csdn.net/mhl18820672087/article/details/78385361

2奠宜,@override,這個(gè)代表重寫瞻想,作用如下

1压真,當(dāng)注釋用,方便閱讀

2蘑险,編譯器會(huì)檢測(cè)你下面的代碼滴肿,如果不是父類中的方法會(huì)報(bào)錯(cuò)

3,創(chuàng)建虛擬機(jī)時(shí)佃迄,顯示VT-X is disabled in BIOS

Windows默認(rèn)的時(shí)不支持處理器虛擬化的泼差,所以你需要進(jìn)入BIOS將CPU虛擬化打開,進(jìn)BIOS和屎,這個(gè)不同的電腦進(jìn)入方法不同拴驮,我的惠普時(shí)開機(jī)點(diǎn)幾下F10,具體的百度吧柴信。之后,在把

image

這個(gè)選項(xiàng)下下來(lái)就ok了宽气,就可以創(chuàng)建虛擬機(jī)了

4随常,學(xué)會(huì)用log打印日志信息,不是用System.ou.printn("******");

因?yàn)镴ava的緣故萄涯,我之前認(rèn)為的輸出也這么簡(jiǎn)單绪氛,然而看了大神的書,才知道這個(gè)除了方便什么其他好處涝影,因?yàn)槭褂肧ystem.out.println();不能使用過(guò)濾器枣察,日志沒(méi)有級(jí)別之分等等,總之,用log就對(duì)了序目。臂痕。。

第二章

生命周期:

image

防止數(shù)據(jù)得不到保存:

利用onSaveInstanceState()猿涨,他可以保證活動(dòng)在回收前一定會(huì)被調(diào)用握童,然后,通過(guò)onCreate方法中的Buntle類型的參數(shù)來(lái)取出數(shù)據(jù)

Toast

利用toast可以向用戶提示一下信息叛赚,常見(jiàn)格式為Toast.makeText(testActivity.this,"You clicked it",Toast.LENGTH_LONG).show();

第一個(gè)參數(shù)是Toast要求的上下文(我還不是很懂)澡绩,第二個(gè)參數(shù)是提示的信息內(nèi)容,第三個(gè)是顯示這個(gè)提醒的時(shí)間長(zhǎng)短(取值可以為L(zhǎng)ENGTH_LONG或者LENGTH_SHORT)

啟動(dòng)模式

啟動(dòng)模式:分為standard俺附,singleTop肥卡,singleTask,singleInstance

默認(rèn)的模式為standard事镣,安卓是使用棧來(lái)管理活動(dòng)的召调。

standard:默認(rèn)情況下,每啟動(dòng)一個(gè)活動(dòng)蛮浑,就會(huì)新建一個(gè)實(shí)例唠叛,入棧,并且處于棧頂?shù)奈恢镁谥桑到y(tǒng)不在乎這個(gè)活動(dòng)在棧中是否存在艺沼。

singleTop:?jiǎn)?dòng)同一個(gè)活動(dòng)并且活動(dòng)在棧頂?shù)臅r(shí)候都會(huì)直接使用棧頂?shù)幕顒?dòng),而不是新建一個(gè)實(shí)例

singleTask:每次啟動(dòng)時(shí)系統(tǒng)會(huì)先檢查棧中是否存在該活動(dòng)的一個(gè)實(shí)例蕴掏,如存在障般,則將火種之上是所有活動(dòng)統(tǒng)統(tǒng)出棧(銷毀),沒(méi)有則創(chuàng)建一個(gè)新的活動(dòng)

singleInstance: 是創(chuàng)建一個(gè)新的棧來(lái)管理這個(gè)活動(dòng)

第三章:

這本書里講到的界面設(shè)計(jì)都是用最基本的方式實(shí)現(xiàn)的,即編寫xml文件

所有的控件都具有寬度和高度屬性,即android:layout_width和android:layout_height,這兩個(gè)屬性對(duì)應(yīng)的值有三個(gè),分別為wrap_content和match_parent和fill_parent,后兩個(gè)的意義相同,都表示和父類控件的屬性相同,前面那個(gè)則表示控件剛好包好里面的內(nèi)容,即內(nèi)容決定控件大小.

常用控件

TextView,是最簡(jiǎn)單的一種控件,用于界面上顯示一些信息Button,顧名思義,表示按鈕,屬性與TextView基本相同,可以利用textAllCaps來(lái)對(duì)按鈕上的字的字母大小寫進(jìn)行設(shè)置EditText,用于輸入和編輯內(nèi)容,比如QQ發(fā)信息,是用戶交互中一個(gè)很重要的控件,重要屬性:maxlines,通過(guò)他來(lái)限制輸入的最大行數(shù),防止不斷被拉長(zhǎng)ImageView,展示圖片的控件,圖片通常放在drawable目錄當(dāng)中,屬性跟前面大致相同ProgressBar,在界面上展示一個(gè)進(jìn)度條,用來(lái)表示程序加載進(jìn)度,可以通過(guò)android:visibility來(lái)控制其可見(jiàn)性,有visible,invisible,gone三個(gè)值A(chǔ)lertDialog,用于彈出對(duì)話框,并且這個(gè)框可以屏蔽屏幕上各個(gè)控件的交互能力,一般用于提示警告信息ProcessDialog,跟上面AlertDialog類似,都是彈出對(duì)話框并屏蔽其他控件,不同的是它顯示的是進(jìn)度條

自定義控件

自定義控件其實(shí)也就是重寫一個(gè)類,繼承已有的類,然后再繼續(xù)編寫,這樣就能減少重復(fù)的代碼,這里著重要說(shuō)的應(yīng)該是適配器的使用,這里是鑲嵌在ListView里面講的,為什么講ListView要說(shuō)適配器.ListView是用來(lái)展示大量數(shù)據(jù)的,但是例如一個(gè)數(shù)組,里面的數(shù)據(jù)是不能直接傳遞給ListView我們需要借助適配器來(lái)完成,我簡(jiǎn)單理解為一個(gè)盒子,這樣我們就可以將東西裝在盒子里面然后裝上貨車,而不是把東西直接放上貨車

ListView性能優(yōu)化,ListView很難用的原因之一就是它有很多地方可以優(yōu)化,就例如在這個(gè)方法中

image

這里每次調(diào)用這個(gè)函數(shù)的時(shí)候,不管他里面有沒(méi)有元素,都會(huì)講布局重新加載一遍,這樣,當(dāng)布局的數(shù)量逐漸多起來(lái)并且快速滑動(dòng)的時(shí)候,時(shí)間復(fù)雜度也會(huì)跟著上來(lái),所以這里還有優(yōu)化的空間,而切入點(diǎn)就從加載布局這里下手,我們?cè)O(shè)置一個(gè)判斷條件,如果調(diào)用這個(gè)函數(shù)的時(shí)候,convertView這個(gè)外部變量里面沒(méi)有元素,則加載布局,否則不加載,這樣就在一定程度上提高了性能

image

書中還講到的一個(gè)優(yōu)化的地方便是建一個(gè)緩存了,用來(lái)存放加載完成的控件的實(shí)例,放在我們自己定義的ViewHolder類里面,這樣在convertView不為空的時(shí)候,通過(guò)getTag取出,避免每次都用findViewById()來(lái)找布局了

最后說(shuō)一說(shuō)

RecyclerView

不詳細(xì)講用法什么的了,講一講需要注意的地方,之前做那個(gè)聊天界面的時(shí)候,我的程序程序總是只能顯示輸入框,然而卻沒(méi)

沒(méi)有出來(lái)信息,我找遍了整個(gè)程序,好吧再?gòu)?qiáng)的大腦也不能媲美編譯器,最后繳械投降,我再自定義布局的函數(shù)里都加了一句Log.d("#####","####"),來(lái)看著部分代碼有沒(méi)有執(zhí)行,類似這樣

image

點(diǎn)一下按鈕就看一下日志,最后發(fā)現(xiàn)是onCreateVieHolder那個(gè)函數(shù)壓根沒(méi)有調(diào)用,最后各種找教程我找到了幾個(gè)原因,這里也體現(xiàn)了log的作用了

onCreateViewHolder沒(méi)有加載有以下四種可能

1,沒(méi)有用layoutManager

2,沒(méi)有用scrollView嵌套R(shí)ecyclerView,這個(gè)其實(shí)問(wèn)題不大,但聽網(wǎng)上大牛說(shuō)在某些版本里面不嵌套不行

3,getItemCount這個(gè)函數(shù)返回非正數(shù),返回負(fù)數(shù)和0是不能顯示出的

4,最外層的LinearLayout的屬性里沒(méi)有設(shè)置orientation,并且要定為"vertical",這樣才能加載出來(lái)

第五章

參考博客:https://blog.csdn.net/chuyouyinghe/article/details/79424373

照著書上的源碼將程序原封不動(dòng)敲了一遍,但發(fā)現(xiàn)這特么怎么也收不到發(fā)出的廣播

<receiver android:name=".MyBroadCastReceiver"  
            android:permission="com.example.Broadcasttest.MY_BROADCAST">  
            <intent-filter>  
                <action android:name="com.example.Broadcasttest.MY_BROADCAST"/>  
            </intent-filter>  
        </receiver>  
    </application>  

如上代碼,我在manifest中也注冊(cè)了

再看這里


Button button = (Button) findViewById(R.id.button);  

button.setOnClickListener(new View.OnClickListener(){  

@Override  

public void onClick(View v){  

Intent intent =new Intent();  

intent.setAction("com.example.Broadcasttest.MY_BROADCAST");  

                sendBroadcast(intent);  

            }  

        });  

心里當(dāng)時(shí)一萬(wàn)個(gè)草泥馬路過(guò),我在自定義的廣播接收類里面的onReceive里面用Log打印了信息,發(fā)現(xiàn)這個(gè)函數(shù)壓根就沒(méi)有運(yùn)行,于是我上網(wǎng)百度了一波.不得不說(shuō)這個(gè)地方還是相當(dāng)?shù)目拥?/p>

因?yàn)?我用的虛擬機(jī)的安卓版本是8.0,但是,8.0,取消了大部分靜態(tài)注冊(cè)!!!

一般來(lái)說(shuō),出現(xiàn)自定義的廣播接收器接收不到信息的原因,有如下幾個(gè)

1,Manifest里面沒(méi)有注冊(cè)

2,注冊(cè)了但是Action里面那個(gè)android:name與Intent.setAction()的參數(shù)不匹配

3,就是系統(tǒng)的原因了,前兩個(gè)一般設(shè)置代碼跟蹤可以找得出,但第三個(gè)一般不容易,只能上網(wǎng)查一查了

所以這里這個(gè)問(wèn)題的解決辦法就只能是將虛擬機(jī)的安卓版本調(diào)低一點(diǎn).好像是7.0以下都能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盛杰,一起剝皮案震驚了整個(gè)濱河市挽荡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌即供,老刑警劉巖定拟,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異逗嫡,居然都是意外死亡青自,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門驱证,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)延窜,“玉大人,你說(shuō)我怎么就攤上這事抹锄∧嫒穑” “怎么了荠藤?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)获高。 經(jīng)常有香客問(wèn)我哈肖,道長(zhǎng),這世上最難降的妖魔是什么谋减? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任牡彻,我火速辦了婚禮,結(jié)果婚禮上出爹,老公的妹妹穿的比我還像新娘庄吼。我一直安慰自己,他們只是感情好严就,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布总寻。 她就那樣靜靜地躺著,像睡著了一般梢为。 火紅的嫁衣襯著肌膚如雪渐行。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天铸董,我揣著相機(jī)與錄音祟印,去河邊找鬼。 笑死粟害,一個(gè)胖子當(dāng)著我的面吹牛蕴忆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悲幅,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼套鹅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汰具?” 一聲冷哼從身側(cè)響起卓鹿,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎留荔,沒(méi)想到半個(gè)月后吟孙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡存谎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年拔疚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既荚。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖栋艳,靈堂內(nèi)的尸體忽然破棺而出恰聘,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布晴叨,位于F島的核電站凿宾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兼蕊。R本人自食惡果不足惜初厚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孙技。 院中可真熱鬧,春花似錦、人聲如沸哨免。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哈雏。三九已至楞件,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裳瘪,已是汗流浹背土浸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彭羹,地道東北人黄伊。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像皆怕,于是被迫代替她去往敵國(guó)和親毅舆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • 清明節(jié)愈腾,中國(guó)人多會(huì)回故里祭奠離開的親人憋活,或是認(rèn)祖歸宗,這也是國(guó)人的一種思鄉(xiāng)情節(jié)虱黄。 修家譜族譜悦即,拜祭祖宗成了清明的一...
    洛泓閱讀 294評(píng)論 0 1
  • 01 周末看了一部粵語(yǔ)劇《可愛(ài)的你》,一度總以為港片不是破案賭博或者宮廷斗陣戲橱乱,沒(méi)想到還有這樣一部全程讓我好幾次想...
    Cherish5240閱讀 995評(píng)論 0 2