Android读书笔记(一)

系统架构

  • linux内核 包括各种驱动
  • 运行库 比如SQLite提供数据库, OpenGL|ES提供3D绘图,WebKit提供web内核
  • 应用框架层 主要提供各种API
  • 应用层

四大组件

  • 活动(Activity)
  • 服务 (Service)
  • 广播接收器 (Broadcast Receiver)
  • 内容提供器 (Content Provider)
SQLite

android提供的轻量级,嵌入式数据库,可以使用android自带的API进行操作

Android Studio中的目录结构

关注几个比较重要的目录

  • app 存放代码和资源
    • AndroidManifest.xml 用于指定四大组件
    • porguard-rules.pro 用于指定混淆规则,防止安装包破解
  • gitignore 版本控制,将不需要的文件排除在外
  • gradle properties gradle的全局配置文件
  • local properties 用来指定本地的sdk路径
  • settings gradle 用来指定模块

项目是如何运行的

intent-filter中的内容表示这个HelloWorldActivity是项目的主活动,点击图标时会运行这个活动

    <activity android:name=".HelloWorldActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

setContentView方法引用了视图资源,这样实现了视图和逻辑分离

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_world_layout);
    }

引用了hello_world_layout.xml这个布局文件,在TextView中显示"Hello World!"

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
引用res下的资源

比如string.xml中,有如下代码

<resources>
    <string name="app_name">HelloWorld</string>
</resources>

在代码中通过R.string.hello_world引用
在xml中通过@string/hello_world引用

build.gradle

这是最外层的build.gradle两处闭包都声明了jcenter()这个中央仓库,依赖里面声明了android需要的依赖

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }

这里是app项目下的build.gradle
第一行用于声明项目是应用模块还是库模块。
android闭包中声明Sdk版本等,applicationId指定项目名,versionCode和versionName指定版本号和版本名。
buildtypes闭包中,可以有release,可以有debug,debug表示调试的配置,release表示发行版的配置。里面的内容表示是否混淆,并且指定了两个文件,一个文件是在sdk中的,一个文件是在项目路径下的。
dependencies闭包声明了依赖,第一行fileTree表示把jar包和libs文件夹中的内容添加到项目中。依赖有三种:本地依赖,库依赖,远程依赖。这里使用了远程依赖,远程依赖在缓存中不存在的情况下会自动下载。testcompile是声明测试用例库的。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "com.example.helloworld"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
}

日志工具

andriod提供了日志工具类,总共包括5种方法(级别从低到高):

  • Log.v()
  • Log.d()
  • Log.i()
  • Log.w()
  • Log.e()
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_world_layout);
        Log.d(TAG, "onCreate execute");
    }

方法中有两个参数,第一个参数是TAG,一般是当前的类名,第二个参数是msg,输出想打印的信息就可以了。可以在onCreate方法外面输入logt并用tab补全就能自动根据当前类生产TAG信息。
还可以使用logcat来进行日志筛选。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值