第一行代码总结之一二章
第一行代码安卓-第二版
作者:郭霖
霖神是敬佩的大佬,对安卓有兴趣,读了这本书后,对其知识点作了一定总结,希望能够帮助到后面学习的人。写的比较笼统,还望勿喷。打算花上三周时间把这本书刷一遍总结。
Chap1开启行程——你的第一行代码程序
1.1.了解全貌-Android王国简介
(1)Android系统架构:
从下往上分别是:Linux内核层、系统运行库层(C/C++库、Android系统运行时库)、应用框架层(Android自带API)、应用层。
(2)Android应用开发特色:
Android自08年9月发布1.0,17年已推出Android 8.0(Oreo)。
开发特色包括了:
1.四大组件(Activity<活动>、Service<服务>、Broadcast Receiver<广播接收器>、Content Provider<内容提供器>);
2.丰富的系统控件(第二章会细说);
3.SQlite轻量级数据库(支持SQL语法及Android封装API都可以),其实还可以用霖神的LitPal;
4.强大多媒体(音乐、视频、拍照等);
5.地理位置,GPS(LBS)。
1.2.手把手搭建开发环境
开发环境为JDK8+SDK+Android Studio,搭建过程参考书籍。
1.3.文件结构:
1.需要关注的有local.prorerties(SDK、NDK路径,自动生成)、app目录下的libs(引入的第三方jar包)、java(所有java代码)、res(图片、布局、字符串资源等)、AndroidManifest.xml(程序定义的四大控件+权限说明***)、build.gradle(app的gradle构建脚本***)。
2.res目录下有drawable(图片)、mipmap(应用图标)、values(字符串、样式、颜色)、layout(布局文件)。
1.4前行必备——掌握日志工具的使用
Log.v(),打印较为琐碎、意义最小的日志工具;
Log.d(),打印一些调试信息;
Log.i(),打印一些比较重要数据,分析用户行为数据;
Log.w(),打印一些警告信息,潜在的风险;
Log.e(),打印错误信息。
Chap2 先从看得见的入手——探究活动
2.1.活动是什么
包含用户界面的组件,主要用于和用户进行交互。
2.2.活动的基本用法
(1)Android程序讲究逻辑与视图分离;
(2)android:id 元素当前唯一的标识符l android:width 元素宽度 android:height 元素高度。
(3)wrap_content 当前元素刚好包括里面东西
Fill_parent 填满父类容器。
(4)setContentView()方法给当前活动加载一个布局,必须要在AndroidManifest.xml中注册,但AS已经帮我们动态注册。
(5)Toast方法,较为简单。Toast.maketext().show()。
(6)在活动中使用Menu
1.res目录下创建menu文件夹,创建Menu Resource file。添加item菜单项,菜单项包括了id与titile两个label。
2.重写OnCreateOptionMenu方法来加载布局。重写onOptionItemSelected方法来定义响应事件。P39
(7)销毁一个活动:Back键或finish方法。
2.3 使用Intent在活动之间穿梭
(1)使用显式Intent
Intent是Android程序中各组件之间的一种交互方式。用于启动活动、服务以及发送广播。
Intent intent = new Intent(MainActivity.this,SecondActivity.clalss);
startAcitvity(intent);
(2)使用隐式Intent
1.在xml中设置,<action>标签指明了当前活动可以响应com.nwu.hzk.ACTION_START这一活动,在隐式调用时必须加上<category>标签为android.intent.category.DEFAULT。这样才能得到隐式Intent的响应。
2.系统去分析这个Intent,并找出合适的启动活动去启动。启动方法大致与显式相同,
Intent intent =new Intent(“com.nwu.hzk.ACTION_START”);
startActivity(intent);
3.更多隐式Intent的用法,比如调用浏览器,也可以用来打电话。
Intent intent =new Intent(Intent.ACTION_VIEW);
//指定Action为ACTION_VIEW
Intent.setData(Uri.parse(“http://www.baidu.com”));
//将Uri对象传递进去
startActivity(intent);
(3)发送接受数据
1.传递数据:intent.putExtra(“extra_data”,data);第一个参数为键,第二个参数才是真正要传递的数据。
2.在另一个Activity中接收数据。
Intent intent = getIntent();
String data=intent.getStringExtra(“extra_data”);
//getIntent()用于启动该Activity的Intent,然后传入相应键值获取数据。
3.返回数据给上一个活动
FirstActivity中startActivityForResult(intent,1);//1为请求码
SecondActivity中增加setResult(RESULT_OK,intent);//专门向上一个活动来返回处理结果。
2.4 活动生命周期
其是一个返回栈。
(1)活动状态
共有四种:运行状态(位于栈顶时)、暂停状态(不再处于栈顶,但仍然可见)、停止状态(不再处于栈顶且完全不可见)、销毁状态(从返回栈移除)。
(2)活动生存期
OnCreate方法在活动第一次创建时候被调用;onStart方法由不可见变为可见时调用;onResume活动准备好与用户进行交互时;onPause方法另一个活动来到前台,部分可见;Onstop活动完全不可见;onDestroy方法活动被销毁之前调用;onResart方法调用之前的活动。可以尝试log输出重写方法体验一把这过程。注意Dialog必须继承自Activity而非AppCompatActivity。
(3)活动启动方式
通过在AndroidMAnifest.xml中<Activity>标签中指定android:launchMode来确定启动方式。
1.standard:
默认方式,采用栈的方式进行存储。
2.singleTop:(解决重复创建栈顶活动问题)
若在启动时发现栈顶已是该活动,因此直接使用该活动,而不用再创建。
3.singleTask:
若启动活动未在栈顶,则还是有可能创建多个活动,解决可能创造多个实例的问题。
4.singleInstance
处理其他程序与我们程序共享这个活动的实例。
(四)活动最佳实践
1.知晓在当前哪一个活动
改变继承关系.
2.随时随地推出程序
专门集合类对所有活动进行管理,动态数组,并建立添加、删除、结束活动方法。
3.启动活动最佳写法。
在MAin2Activity中设置启动活动的方法,并方法参数形式传递过来,设置Context.startActivity(intent)来调用。
在MAin2Activity中一行代码启动Activity。