《第一行代码》读书笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《第一行代码》读书笔记相关的知识,希望对你有一定的参考价值。

一:

1:项目文件

开发中经常用到的有:

app目录:存放项目代码、资源文件

build.gradle:项目全局gradle脚本。

 

2:app目录

libs:放到libs目录下的第三方jar包会自动添加到项目构建路径。

java:存放java代码的地方。

res:资源文件目录,包括:图片、布局、字符串、颜色、样式、菜单等。

androidManifest.xml:项目配置文件。多用于注册四大组、添加权限等。

proguard-rules.pro:项目代码混淆规则。

 

3:build.gradle逐项解析

apply plugin: ‘com.android.application‘//说明module的类型,com.android.application为程序,com.android.library为库
android {
    compileSdkVersion 22//编译的SDK版本
    buildToolsVersion "22.0.1"//编译的Tools版本
    defaultConfig {//默认配置
        applicationId "com.nd.famlink"//应用程序的包名
        minSdkVersion 8//支持的最低版本
        targetSdkVersion 19//支持的目标版本
        versionCode 52//版本号
        versionName "3.0.1"//版本名
    }
    sourceSets {//目录指向配置
        main {
            manifest.srcFile ‘AndroidManifest.xml‘//指定AndroidManifest文件
            java.srcDirs = [‘src‘]//指定source目录
            resources.srcDirs = [‘src‘]//指定source目录
            aidl.srcDirs = [‘src‘]//指定source目录
            renderscript.srcDirs = [‘src‘]//指定source目录
            res.srcDirs = [‘res‘]//指定资源目录
            assets.srcDirs = [‘assets‘]//指定assets目录
            jniLibs.srcDirs = [‘libs‘]//指定lib库目录
        }
        debug.setRoot(‘build-types/debug‘)//指定debug模式的路径
        release.setRoot(‘build-types/release‘)//指定release模式的路径
    }
    signingConfigs {//签名配置
        release {//发布版签名配置
            storeFile file("fk.keystore")//密钥文件路径
            storePassword "123"//密钥文件密码
            keyAlias "fk"//key别名
            keyPassword "123"//key密码
        }
        debug {//debug版签名配置
            storeFile file("fk.keystore")
            storePassword "123"
            keyAlias "fk"
            keyPassword "123"
        }
    }
    buildTypes {//build类型
        release {//发布
            minifyEnabled true//混淆开启
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-project.txt‘//指定混淆规则文件
            signingConfig signingConfigs.release//设置签名信息
        }
        debug {//调试
            signingConfig signingConfigs.release
        }
    }
    packagingOptions {
        exclude ‘META-INF/ASL2.0‘
        exclude ‘META-INF/LICENSE‘
        exclude ‘META-INF/NOTICE‘
        exclude ‘META-INF/MANIFEST.MF‘
    }
    lintOptions {
        abortOnError false//lint时候终止错误上报,防止编译的时候莫名的失败
    }
}
dependencies {
    compile fileTree(dir: ‘libs‘, exclude: [‘android-support*.jar‘], include: [‘*.jar‘])   //编译lib目录下的.jar文件
    compile project(‘:Easylink‘)//编译附加的项目
    compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.3‘//编译来自Jcenter的第三方开源库
}

 

4:菜单

菜单有多种:optionMenu、上下文菜单、弹出菜单等。

菜单可以在代码中动态添加,也可以在xml中定义好菜单项,在代码中加载。

菜单可以分组管理菜单项,也可以拥有子菜单。

 

5:Intent

Intent可以用于启动四大组件,可以携带数据,不过只能通过键值对的形式携带基本类型数据。

Intent有两种:显式Intent和隐式Intent。

隐式Intent通过添加action、category、data等附加内容,来匹配系统中符合要求(注册时配置 intent-filter)的活动、服务等。

 

6:返回数据的跳转

启动另一个活动可以有两种方法,其中startActivityForResult(intent,请求码)启动的跳转,可以在活动中重写回调方法onActivityResult(请求码,结果码,intent)来获取返回数据,通过请求码匹配具体请求的返回、通过结果码判断结果的类型,通过intent提取返回的数据。

 

7:保存Activity中的数据

活动跳转后,之前的活动可能会被回收,若想保存之前的活动的数据,使得返回这个活动时数据仍在,可以在活动中重写 onSaveInstanceState(bundle)回调方法,这个方法会在活动被回收之前调用,把数据存在budle中,那么下一次该活动重建时,可以在onCreate(bundle)中通过bundle取回数据。

 

8:精确定位活动

可以定义一个BaseActivity,继承自AppCompatActivity,然后定义一些通用的方法、操作,如:打印当前活动信息。

另其他活动继承BaseActivity,即可在项目运行时知道哪个页面对应哪个活动了。

 

9:批量管理活动

可以定义一个工具类,其中维护一个活动list。

同上面,在BaseActivity中重写onCreate方法,每当创建一个活动就通过工具类的景泰方法把活动添加到list中去。

那么工具类中其他方法就可以通过list批量操作活动了,例如:批量打印活动信息、批量结束活动等。

 

二:

以上是关于《第一行代码》读书笔记的主要内容,如果未能解决你的问题,请参考以下文章

《第一行代码》读书笔记

《第一行代码》读书笔记三

《第一行代码》读书笔记二

第四周读书笔记

Think In Java读书笔记:内部类覆盖及其初始化

读书笔记《Android应用性能优化最佳实践》