第一行代码总结之一二章

                                                                                  第一行代码安卓-第二版

                                                                                           作者:郭霖

        霖神是敬佩的大佬,对安卓有兴趣,读了这本书后,对其知识点作了一定总结,希望能够帮助到后面学习的人。写的比较笼统,还望勿喷。打算花上三周时间把这本书刷一遍总结。

                                                                       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。