Android学习日记1

1. Android系统架构

解析:

Android学习日记1


2. Android研究领域

解析:

(1)界面编程

(2)数据库编程

(3)网络编程

(4)游戏编程

(5)OpenGL编程

(6)音频编程

(7)视频编程

(8)安全编程

(9)驱动编程

(10)H5互调编程


3. OTA(Over-the-Air Technology)

解析:OTA(Over-the-Air Technology)即空间下载技术。它是通过移动通信的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。


4.Android应用开发四大组件

解析:Activity,Service,BroadcastReceiver,ContentProvider。


5.Dalvik虚拟机

解析:Dalvik是Google公司设计用于Android平台的虚拟机。它支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。


6.android:id,android:layout_width,android:layout_height

解析:

(1)android:id,该属性指定该控件的唯一标识,在Java程序中可通过findViewById("id")来获取指定的Android界面组件。

(2)android:layout_width,指定该界面组件的宽度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的宽度;如果该属性值为wrap_content,则说明该组件的宽度取决于它的内容。

(3)android:layout_height,指定该界面组件的高度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的高度;如果该属性值为wrap_content,则说明该组件的高度取决于它的内容。


7.Nexus 5X

解析:谷歌Nexus 5X,2015年9月30日该手机在美国旧金山谷歌新品发布会发布。该手机宣传卖点主要为轻薄塑料机身、经过强化成像质量更好的摄像头、持久的电量以及和 Nexus 6P一样的背面指纹识别功能。


8.Bundle类

解析:Android中Bundle类的作用类似于Map,用于存放key-value形式的值。


9.Android布局管理器

解析:LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局)。 


10.gradle

解析:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。


11.intent中setClass,setClassName和setComponent区别

解析:

(1)intent.setClass(当前组件.this, 目标组件.class):打开内部activity。
(2)intent.setClassName(包名, 包名+activity名):打开外部应用。
(3)intent.setComponent(new ComponentName(包名, 包名+activity名)):打开外部应用。


12.Intent

解析:Android中的Intent提供了一种通用的消息系统,它允许在应用程序与其它的应用程序间传Intent来执行动作和产生事件。使用Intent可以**Android应用三种类型的核心组件:活动、服务和广播接收者。


13.Service Intent must be explicit

解析:在Android 5.0上采用隐式启动时,会出现java.lang.IllegalArgumentException: Service Intent must be explicit异常。解决方法是给Intent设置具体的包名,指明具体是哪个包启动的Service。


14.IBinder

解析:Android通过IBinder实现IPC(Inter Process Communication)进程间通信的。


15.开启Service方式

解析:

(1)Context.startService():Service会经历onCreate->onStart(如果Service还没有运行,则Android先调用onCreate然后调用onStart;如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次);stopService的时候直接onDestroy,如果是调用者直接退出而没有调用stopService,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。多次调用Context.startService()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动多少次,一旦调用Context.stopService()或者stopSelf(),它都会被停止。需要说明的是,传递给startService()的Intent对象会传递给onStart()方法。调用顺序为onCreate->onStart(可多次调用)->onDestroy。

(2)Context.bindService():Service会经历onCreate()->onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其它操作。这个时候调用者(Context,比如Activity)会和Service绑定在一起,Context退出了,Service就会调用onUnbind->onDestroy相应退出。所谓绑定在一起就共存亡了。


参考文献: 

[1] Android研究领域:https://www.zhihu.com/question/27102589