第一行代码读书笔记

第一章

不同于eclipse,AS的方便的地方就是谷歌已经将东西都集成好了,例如JDK和安卓的SDK,之前看过一会第一版用eclipse的时候就踩了挺多的坑,于是果断转向第二版。接下来是我在看第一章的时候遇到的坑已经一些感想和笔记。

1,安装AndroidStudio。

下载的话,途径很多,可以官网,不过需要翻墙。需要科学上网。不想去官网的话,不妨下我云盘里面的

链接:https://pan.baidu.com/s/1HInD24u62j0GNUG2TIGwUw 密码:c3wh

下载后安装的一些细节我就不赘述了。按照作者的步骤,读到这里应该是不会报错的。但我在这里遇到了一个问题,我发现


@override

这一行下面会有红线,显示有错误,下面还有相关信息

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

我刚开始以为是我环境没装好,或者是SDK版本还没有下完全,于是重新安装AS,还是没能解决,最后在某个大神的博客中找到了答案

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

2,@override,这个代表重写,作用如下

1,当注释用,方便阅读

2,编译器会检测你下面的代码,如果不是父类中的方法会报错

3,创建虚拟机时,显示VT-X is disabled in BIOS

Windows默认的时不支持处理器虚拟化的,所以你需要进入BIOS将CPU虚拟化打开,进BIOS,这个不同的电脑进入方法不同,我的惠普时开机点几下F10,具体的百度吧。之后,在把

image

这个选项下下来就ok了,就可以创建虚拟机了

4,学会用log打印日志信息,不是用System.ou.printn("******");

因为Java的缘故,我之前认为的输出也这么简单,然而看了大神的书,才知道这个除了方便什么其他好处,因为使用System.out.println();不能使用过滤器,日志没有级别之分等等,总之,用log就对了。。。

第二章

生命周期:

image

防止数据得不到保存:

利用onSaveInstanceState(),他可以保证活动在回收前一定会被调用,然后,通过onCreate方法中的Buntle类型的参数来取出数据

Toast

利用toast可以向用户提示一下信息,常见格式为Toast.makeText(testActivity.this,"You clicked it",Toast.LENGTH_LONG).show();

第一个参数是Toast要求的上下文(我还不是很懂),第二个参数是提示的信息内容,第三个是显示这个提醒的时间长短(取值可以为LENGTH_LONG或者LENGTH_SHORT)

启动模式

启动模式:分为standard,singleTop,singleTask,singleInstance

默认的模式为standard,安卓是使用栈来管理活动的。

standard:默认情况下,每启动一个活动,就会新建一个实例,入栈,并且处于栈顶的位置,系统不在乎这个活动在栈中是否存在。

singleTop:启动同一个活动并且活动在栈顶的时候都会直接使用栈顶的活动,而不是新建一个实例

singleTask:每次启动时系统会先检查栈中是否存在该活动的一个实例,如存在,则将火种之上是所有活动统统出栈(销毁),没有则创建一个新的活动

singleInstance: 是创建一个新的栈来管理这个活动

第三章:

这本书里讲到的界面设计都是用最基本的方式实现的,即编写xml文件

所有的控件都具有宽度和高度属性,即android:layout_width和android:layout_height,这两个属性对应的值有三个,分别为wrap_content和match_parent和fill_parent,后两个的意义相同,都表示和父类控件的属性相同,前面那个则表示控件刚好包好里面的内容,即内容决定控件大小.

常用控件

TextView,是最简单的一种控件,用于界面上显示一些信息Button,顾名思义,表示按钮,属性与TextView基本相同,可以利用textAllCaps来对按钮上的字的字母大小写进行设置EditText,用于输入和编辑内容,比如QQ发信息,是用户交互中一个很重要的控件,重要属性:maxlines,通过他来限制输入的最大行数,防止不断被拉长ImageView,展示图片的控件,图片通常放在drawable目录当中,属性跟前面大致相同ProgressBar,在界面上展示一个进度条,用来表示程序加载进度,可以通过android:visibility来控制其可见性,有visible,invisible,gone三个值AlertDialog,用于弹出对话框,并且这个框可以屏蔽屏幕上各个控件的交互能力,一般用于提示警告信息ProcessDialog,跟上面AlertDialog类似,都是弹出对话框并屏蔽其他控件,不同的是它显示的是进度条

自定义控件

自定义控件其实也就是重写一个类,继承已有的类,然后再继续编写,这样就能减少重复的代码,这里着重要说的应该是适配器的使用,这里是镶嵌在ListView里面讲的,为什么讲ListView要说适配器.ListView是用来展示大量数据的,但是例如一个数组,里面的数据是不能直接传递给ListView我们需要借助适配器来完成,我简单理解为一个盒子,这样我们就可以将东西装在盒子里面然后装上货车,而不是把东西直接放上货车

ListView性能优化,ListView很难用的原因之一就是它有很多地方可以优化,就例如在这个方法中

image

这里每次调用这个函数的时候,不管他里面有没有元素,都会讲布局重新加载一遍,这样,当布局的数量逐渐多起来并且快速滑动的时候,时间复杂度也会跟着上来,所以这里还有优化的空间,而切入点就从加载布局这里下手,我们设置一个判断条件,如果调用这个函数的时候,convertView这个外部变量里面没有元素,则加载布局,否则不加载,这样就在一定程度上提高了性能

image

书中还讲到的一个优化的地方便是建一个缓存了,用来存放加载完成的控件的实例,放在我们自己定义的ViewHolder类里面,这样在convertView不为空的时候,通过getTag取出,避免每次都用findViewById()来找布局了

最后说一说

RecyclerView

不详细讲用法什么的了,讲一讲需要注意的地方,之前做那个聊天界面的时候,我的程序程序总是只能显示输入框,然而却没

没有出来信息,我找遍了整个程序,好吧再强的大脑也不能媲美编译器,最后缴械投降,我再自定义布局的函数里都加了一句Log.d("#####","####"),来看着部分代码有没有执行,类似这样

image

点一下按钮就看一下日志,最后发现是onCreateVieHolder那个函数压根没有调用,最后各种找教程我找到了几个原因,这里也体现了log的作用了

onCreateViewHolder没有加载有以下四种可能

1,没有用layoutManager

2,没有用scrollView嵌套RecyclerView,这个其实问题不大,但听网上大牛说在某些版本里面不嵌套不行

3,getItemCount这个函数返回非正数,返回负数和0是不能显示出的

4,最外层的LinearLayout的属性里没有设置orientation,并且要定为"vertical",这样才能加载出来

第五章

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

照着书上的源码将程序原封不动敲了一遍,但发现这特么怎么也收不到发出的广播

<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中也注册了

再看这里


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);  

            }  

        });  

心里当时一万个草泥马路过,我在自定义的广播接收类里面的onReceive里面用Log打印了信息,发现这个函数压根就没有运行,于是我上网百度了一波.不得不说这个地方还是相当的坑的

因为,我用的虚拟机的安卓版本是8.0,但是,8.0,取消了大部分静态注册!!!

一般来说,出现自定义的广播接收器接收不到信息的原因,有如下几个

1,Manifest里面没有注册

2,注册了但是Action里面那个android:name与Intent.setAction()的参数不匹配

3,就是系统的原因了,前两个一般设置代码跟踪可以找得出,但第三个一般不容易,只能上网查一查了

所以这里这个问题的解决办法就只能是将虚拟机的安卓版本调低一点.好像是7.0以下都能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,391评论 25 707
  • 清明节,中国人多会回故里祭奠离开的亲人,或是认祖归宗,这也是国人的一种思乡情节。 修家谱族谱,拜祭祖宗成了清明的一...
    洛泓阅读 286评论 0 1
  • 01 周末看了一部粤语剧《可爱的你》,一度总以为港片不是破案赌博或者宫廷斗阵戏,没想到还有这样一部全程让我好几次想...
    Cherish5240阅读 962评论 0 2