zoukankan      html  css  js  c++  java
  • 《第一行代码》之——1.Android简介

    Android简介

    Android系统架构

     

    (图片源自维基百科)

    Android大致分为四层架构,五块区域。

    1. Linux内核层

    Android系统基于Linux2.6,这一层为Android设备的各种硬件提供底层的驱动,如显示驱动,银屏驱动,照相机驱动,蓝牙驱动等。

      2. 系统运行库层

    通过一些C/C++库来为Android系统提供主要的特性支持

    同样在这一层还有Android运行时库,它提供了一些核心库,允许开发者使用java语言来编写Android应用。另外Android运行时库还包含了Dalvik虚拟机,使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。

      3. 应用框架层

    主要提供了构建应用程序时可能用到的各种API

      4. 应用层

    所有安装在手机上的应用程序都属于这一层

    Android四大组件

    Android系统四大组件是活动(Activity),服务(Service),

    广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。

    Android项目目录结构

    1. src

    src目录是放置所有Java代码的地方

      2. gen

    这个目录里的内容都是自动生成的,主要有一个R.java文件。在项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。

      3. assets

    主要可以存放一些随程序打包的文件,在程序运行时可以动态读取到这些文件的内容。另外如果在程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都放在这个目录下

      4. bin

    包含了一些在编译时自动生成的文件,其中会有一个当前项目编译好的安装包(.apk)

      5. libs

    如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会自动添加到构建路径里去。

      6. res

    在项目中使用到的所有图片,布局,字符串等资源文件都要存放在这个目录下,R.java中的内容也是根据这个目录下的文件自动生成的。

      7. AndroidManifest.xml

    这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明。

      8. project.properities

    通过一行代码制定了编译程序时所使用的SDK版本

    Android项目中的资源

    1. 以values开头的文件都是用来放字符串的。

      以drawable开头的文件都是用来放图片的。

      以layout开头的文件都是用来放布局的。

      以menu开头的文件都是用来放菜单文件的。

      如果美工只提供一份图片,就把所有图片放在drawable-hdpi文件夹下。

      2. Android程序的设计讲究逻辑和视图的分离,因此不推荐在活动中直接编写界面,更通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。

      3. Android不推荐在程序中对字符串进行硬编码,更好的一般做法是把字符串定义在res.values.strings.xml里,然后在布局文件或代码中引用。

      4. 引用字符串的两种方式

    在代码中通过R.string.hello_world可以获得该字符串的引用

    在XML文件中通过@string/hello_world可以获得该字符串的引用

    Android的日志工具Log

    1. Android的日志工具是Log(android.util.Log),这个类提供了如下几个方法(方法中传入两个参数,第一个参数是tag,一般传入当前的类名就好,主要用于对打印信息进行过滤。第二个参数是msg,即想要打印的具体内容):

    1)    Log.v()

    打印最为琐碎的,意义最小的日志信息

    2)    Log.d()

    打印一些调剂信息

    3)    Log.i()

    打印一些比较重要的数据

    4)    Log.w()

    打印一些警告信息,提示程序在这个地方可能会有潜在的风险

    5)    Log.e()

    打印程序中的错误信息

      2. 如果LogCat中没有打印出任何信息,有可能是因为你当前的设备失去焦点了,这是你只需进入DDMS视图,在Devices窗口中点击一下你当前的设备,打印信息就会出来。

      3. 使用Log而不使用System.out打印日志

    System.out打印日志不可控制,打印时间无法确定,不能添加过滤器,日志没有级别区分

  • 相关阅读:
    MRC下多个对象的内存管理
    MacOS安装flutter(MacOS下flutter环境配置)
    swift 简化使用UserDefaults,UserDefaults使用优化
    swift中多继承的实现
    iOS blowfish加密解密
    *** Assertion failure in void UIViewReportBrokenSuperviewChain(UIView *__strong, UIView *__strong, BOOL)()
    iOS建立自己cocoaPods库
    iOS关于UISwitch按钮值的改变无法监听到的问题
    iOS 11 UICollectionView顶部出现白色间隔的问题
    iOS 对UIAlertController内的输入框进行输入监听,实时改变确定、取消按钮颜色
  • 原文地址:https://www.cnblogs.com/love-u/p/4354514.html
Copyright © 2011-2022 走看看