• 今日十问(五))


    1、什么是Android的四层体系架构?
     <1>系统核心层(Linux Kernel)
      Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等;
     <2>执行层C/C++函数库层(Libraries)及Android Runtime
      这一层通过一些C/C++库来为Android系统提供了主要的特性支持。
     <3>应用程序框架层(Application FrameWork)
      这一层主要提供了构建应用程序时可能用到的各种 API,Android自带的一些核心应用就是使用这些API完成的, 开发者也可以通过使用这些API来构建自己的应用程序。
     <4>应用程序层(Applications)
      所有安装在手机上的应用程序都是属于这一层的。
    2、什么是Activity?
     一个Activity通常就是一个单独的屏幕,它上面可以显示一些UI界面,可也以实现与用户的交互,获得并处理用户在屏幕上的操作,比如:点击、长按等。所有应用的Activity都继承于android.app.Activity类。
    3、Android目录结构。
     <1>src:开发人员源码放置目录;
     <2>gen:自动生成R.java,所有的资源文件都会在R.java文件中以final static内部类的形式被注册。所以可以通过R.id,R.layout等形式来访问资源;
     <3>assets:资产目录,在这个目录中放置的资源文件,不会在R.java文件中被注册。一般程序中的音频或视频文件可以放置在这个目录下;
     <4>bin:编译后的class等文件在此目录。系统自动生成APK;
     <5>libs:第三方jar包;
     <6>res:资源文件,是Android编程中最重要的目录。所有的资源都定义在这个目录下,前面提到的R.java中的内容也是根据这个目录下的文件自动生成的。这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下;
     <7>drawable:图片放置的目录,Android中资源的文件名【a~z0~9_.】,不能以数字和大写字母开头;
     <8>layout:布局文件放置的目录;
     <9>menu:菜单文件放置的目录;
     <10>values:字符串、尺寸等文件放置的目录;
     <11>AndroidManifest.xml:Android清单文件——是Android开发中非常重要的文件。
      (1)该文件中定义了本APP的版本号;
      (2)适用的手机操作系统最大及最小的兼容版本号;
      (3)整个项目中每写一个组件,都需要在该清单文件中注册;
      (4)运行本程序的权限等等。
     <12>project.properties:这个文件通过一行代码指定了编译程序时所使用的SDK版本。
    4.res和assets目录的不同?
     <1>是否在R.java文件中被注册;
     <2>res所放的文件类型是规定好的,而assets目录下放置的文件类型不限制;
     <3>访问方法不同。res中文件使用R.内部静态类.id来访问;而assets中的文件通过IO流来访问;
     <4>assets与res/raw目录下的资源在编译打包时,不会被编译成二进制文件,所以一般在该目录下放置音频、视频等文件。
    5.Dalvik VM与Java VM的区别?
     <1>Dalvik和标准Java虚拟机首要差别:
      (1)Dalvik基于寄存器;
      (2)JVM基于栈;
      基于寄存器的虚拟机对于更大的程序来说,在他们编译的时候,花费的时间更短。
     <2>Dalvik和Java字节码的区别:
      (1)Dalvik执行.dex格式的字节码;
      (2)JVM执行.class格式的字节码。
     <3>Dalvik和Java SDK的SDK不同;
     <4>Dalvik和Java运行环境的区别:
      (1)Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭;
      (2)Dalvik虚拟机在android2.2之后使用JIT(Just-In-Time)技术,与传统的JIT并不完全相同;
      (3)Dalvik虚拟机有自己的bytecode,并非使用Java bytecode。
    6.Android中JAVA包功能描述。
     android.app:提供高层程序模型、提供基本的运行环境;
     android.content:对设备上的数据进行访问和发布的类;
     android.database:通过内容提供者浏览和操作数据库;
     android.graphics:底层的图形库;
     android.location:定位和相关服务的类;
     android.media:管理多种音频、视频的媒体接口;
     android.ney:提供帮助网络访问的类;
     android.os:提供了系统服务、消息传输、IPC机制;
     android.opengl:提供OpenGL的工具;
     android.provider:提供了类访问Android内容提供者;
     android.telephony:提供与拨打电话相关的API交互;
     android.view:提供基础的用户界面接口框架;
     android.util:涉及工具性的方法,例如时间日期的操作;
     android.webkit:默认浏览器操作接口;
     android.widget:包含各种UI元素在应用程序的屏幕中使用。
    7、Android程序的核心组件有哪些?
     View:界面视图、组织UI控件
     Intent:意图,支持组件间通信
     Activity:处理界面与UI互动
     Content Provider:存储共享数据
     IntentReceiver:接受信息及事件处理
     Service:后台服务(如硬件与驱动的服务)
    8、Activity的生命周期。
     void onCreate(Bundle savedInstanceState)
     void onStart()
     void onRestar()
     void onRestart()
     void onPause()
     void onStop()
     void onDestory()
    9、Android中的日志工具类Log提供了哪些方法?
     <1>Log.v()
      用于打印那些最为琐碎的,意义最小的日志信息。对应级别verbose(啰嗦的),是Android日志里面级别最低的一种。
     <2>Log.d()
      用于打印一些调试信息,这些信息对调试程序和分析问题是有帮助的。对应级别debug,比verbose高一级。
     <3>Log.i()
      用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为。对应级别info,比debug高一级。
     <4>Log.w()
      用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。
     <5>Log.e()
      这个方法用于打印程序中的错误信息,比如程序进入到catch语句中。如果有错误信息打印出来了,说明程序出现了严重的问题,必须尽快修复。对应级别error,比warn高一级。
    10、Android的打包过程是什么?
       jdk    dx.bat   aapt        签名jarsigner
     .java -----> .class ------>.dex(res,assets,androidmanifest.xml)------->.apk--------->final apk

  • 相关阅读:
    k8s 新加节点
    /etc/bashrc
    k8s 连接harbor 的私有仓库的两种方法 一种是secret 绑定到sa serviceaccount 账号下 一种是需要绑定到 imagePullSecrets:
    pip install --upgrade urllib3==1.25.2
    mysql skip-grant-tables 后要多次重启 和验证登录检查确认密码生效
    k8s 传参给docker env command、args和dockerfile中的entrypoint、cmd之间的关系
    kubectl -n ingress-nginx exec nginx-ingress-controller-78bd49949c-t22bl -- cat /etc/nginx/nginx.conf
    更新Alpine Linux源 sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories apk add xxx
    ingress nginx https配置
    Ingress-nginx 部署使用
  • 原文地址:https://www.cnblogs.com/android-blogs/p/5684501.html
Copyright © 2020-2023  润新知