admin 管理员组文章数量: 887032
2023年12月25日发(作者:说法)
1、Android体系结构
Android是基于Linux内核的软件平台和操作系统,采用了软件堆栈的架构,共分为4层:第一层是Linux内核,提供由操作系统内核管理的底层基础功能;第二层是中间件层,由函数库和Android运行时构成;第三层是应用程序框架层,提供了Android平台基本的管理功能和组件重用机制;第四层是应用程序层,提供了一系列核心应用程序。
2、Dalvik虚拟机基于寄存器的Java虚拟机,每个应用程序在一个独立的Dalvik虚拟机上运行
3、.apk(Android Package)文件,该文件实际上是个压缩包,可改为.zip解压缩
4、Android两种开发环境:JDK + Eclipse + ADT + Android SDK
JDK + Android Studio + Android SDK
5、14:Min SDK Version最低SDK版本
22:Target SDK Version目标SDK版本
22:Compile SDK Version编译的SDK版本
6、adb:Android Debug Bridge,连接PC与Android设备的桥梁
adb connect 127.0.0.1:6555
查看设备:adb devices
安装软件:adb install
卸载软件:命令1:adb uninstall <软件名>
命令2:adb uninstall -k <软件名>
登录设备shell:命令1:adb shell
命令2:adb shell
从计算机上发送文件到目标机:adb push <本地路径> <远程路径>
从目标机上下载文件到计算机:adb pull <远程路径> <本地路径>
显示帮助信息:adb help
7、Android项目目录:(代码与资源分开)
src 源代码目录
gen 目录(文件是ADT自动生成,不能手动修改,作用:
src中的代码通过访问res中的资源)
res 资源目录(/res/layout/目录:界面布局文件,xml;/res/raw不参加编译的资源,不能生成对应文件)
清单文件(声明应用程序属性信息,声明组件,声明权限,唯一一个组件BroadcastReceiver不需在AndroidManifest中注册)
8、四大组件:Activity,Service,BroadcastReceiver,ContentProvider,前3个组件的组件之间的通信由Intent实现,另一app需通过ContentResolver来与ContentProvider通信。
Activity是app的表示层,作用:与用户交互,显示信息;Service用于无用户界面,但需长时间在后台运行的应用;BroadcastReceiver监听系统广播、其它应用程序广播、其它组件广播,并响应广播消息;ContentProvider用于进程间共享数据。
9、声明权限以访问其他功能:
10、setContentView(UI控件),所有UI控件都继承自View类,View类有一个非常重要的子类:ViewGroup(容器)
ViewGroup(容器)
界面布局 AdapterView(与Adapter配套使用,Adapter提供控件和资源)
ArrayAdapter只能处理列表项内容全是文本的情况
Adapter子类
SimpleAdapter不仅可以处理列表项全是文本的情况,当列表项中还有其他控件时,同样可以处理
setAdapter
具体UI控件有哪些:TextView、EditText、Button、ImageButton、CheckBox、RadioButton、Spinner、ListView和TableHost。
界面布局属性取值:
线性布局---LinearLayout: android:layout_width
android:layout_height
android:orientation
表格布局---TableLayout: android: collapseColumns
android: shrinkColumns
android: stretchColumns
相对布局---RelativeLayout: android:layout_centerHrizontal
android:layout_centerVertical android:layout_centerInparent
android:layout_alignParentBottom android:layout_alignParentLeft
android:layout_alignParentRight android:layout_alignParentTop
android:layout_alignWithParentIfMissing
android:layout_below android:layout_above
android:layout_toLeftOf android:layout_toRightOf
android:layout_alignTop android:layout_alignLeft
android:layout_alignBottom android:layout_alignRight
android:layout_marginBottom android:layout_marginLeft
android:layout_marginRight android:layout_marginTop
帧布局---FrameLayout
网格布局---GridLayout: android:columnCount和android:rowCount
android:layout_rowSpan
android:layout_columnSpan
绝对布局---AbsoluteLayout
11、不同设备显示兼容性——尺寸单位:dp;文字大小单位:sp
Patch9图片:控件拉伸变形
12、事件处理:监听器、onClick()
Activity的启动:
直接启动 :startActivity(Intent intent)
带返回值启动:startActivityForResult(Intent intent, int
requestCode)
Activity的停止:
finish ():结束当前Activity
finishActivity(int requestCode):结束以startActivityForResult(Intent intent, int requestCode)启动的Activity
启动的代码(实验3):
Intent intent = new Intent(, );
startActivity(intent);
Intent附加数据方法:ra()和Bundle
(1)Intent intent = new Intent(,
);
ra("string_key", "string_value");
startActivity(intent);
在MainActivity接收数据:
Intent intent=getIntent();
String keyvalue=ingExtra("string_key");
(2)Bundle bundle =new Bundle();
ing("string_key", "string_value");
ra("key", bundle);
startActivity(intent);
在MainActivity接收数据:
Intent intent =getIntent();
Bundle bundle =dleExtra("key");
String keyvalue=ing("string_key");
7个生命周期方法:
onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()、onDestroy()
生命周期状态图:
Activity4种状态:
运行状态:Activity位于前台,用户可见,获得焦点
暂停状态: Activity可见,但被其它Activity覆盖,没有获得焦点
停止状态:不可见,失去焦点
销毁状态:Activity结束,或所在进程被结束
Activity有4种启动模式,分别为standard、singleTop、singleTask和singleInstance
13、Handler、Looper、MessageQueue工作原理
Looper:每个线程只有一个Looper,负责管理MessageQueue,不断从MessageQueue中取出消息,并将消息分发给对应的Handler处理
MessageQueue:消息管理,由Looper负责管理
Handler:把消息发送给Looper管理的MessageQueue,并负责处理Looper分给它的消息
Looper
Handler MessageQueue
14、区别:
显式Intent(指定启动名称):
– 明确指出目标组件名称的Intent
– 告诉Android系统,我要“找谁”,Android平台将目标组件启动起来
– 常用于APP内部组件间启动
隐式Intent(满足条件):
– 不指名目标组件名称的Intent
– 告诉Android系统,我要“干什么”,Android平台将Intent请求与IntentFilter过滤器做比较,找出匹配Intent请求的组件,将其启动起来
– 常用于不同APP之间传递消息
–
16、Intent七大属性
– Component:明确指定目标组件名称 显式Intent
– Action:动作
– Category:类别 隐式Intent
– Data:向Action属性提供操作的数据
– Type:指定Data属性指定Uri对应的MIME类型
– Extra:携带数据
– Flag:控制旗标
IntentFilter过滤器:
一个隐式Intent与IntentFilter比较时,必须通过Action、Category和Data三个方面的检查,任一个不匹配,都不能启动该组件
如果一个组件没有定义
Intent添加Action只能一条(setAction)
Intent-Filter可以多条(addAction)
17、数据存储3种方式:简单存储、文件存储、数据库存储
少量数据需要保存,用文件即可
– SharedPreferences
– File存储在SD卡
大量数据需要存储
– SQLite数据库
SharedPreferences核心代码步骤:
获取SharedPreferences:
getSharedPreferences(String name, int mode)
• name: 文件名称
• mode: 打开方式
– MODE_PRIVATE:该数据只能被本应用程序读写
保存SharedPreferences:
获取Editor对象,通过SharedPreferences对象的edit()方法
调用Editor对象的putXXX()方法把数据以键值对的形式存放到SharedPreferences对象中
调用Editor对象的commit()方法来把数据保存到XML文件中
editor=();
ing(“volume”,”off”);
();
读取SharedPreferences:
getXXX(String Key, XXX defaultValue)
• Key:键
• defaultValue:如果Key不存在,则返回设置的默认值“defaultValue”
String volume=ing(“volume”);
文件存储:
内部存储:系统绝对路径”/data/data/<应用程序报名>/files/”
外部存储:SD卡路径”/sdcard”
SQLite数据库6个函数:execSQL()、rawQuery()、insert()、delete()、update()、query()
18、ContentProvider作用:应用程序间共享数据
一个应用程序需要把自己的数据暴露给其它app,则该应用程序提供ContentProvider来实现,另外的应用程序可通过ContentResolver来操作暴露出来的数据
配置注册ContentProvider:
android:name="MyContentProvider" android:authorities="t" android:exported="true" /> 域名:authorities 19、Service的6个回调函数:onCreate()、onStartCommand()、onDestroy()、onBind()、onUnbind()、onRebind() startService()、bindService()方式启动的Service,同一类的Service只存在一个对象。 Service与Activity的区别: (1)Service一直在后台运行,没有用户界面,绝不会到前台来; (2)Activity在前台运行,有用户界面,负责与用户交互。 所有创建Service 必须实现onBind(Intent intent)回调方法 Service两种启动方式:startService()和bindService(),Intent必须显示启动Service。startService() 对应的停止方式stopService(),bindService() 对应的停止方式unBindService()。 Service生命周期: 20、发送广播有3种方式:sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast()。 BroadcastReceiver两种注册方式:静态注册、动态注册。静态注册在中注册,动态注册在代码中注册,取消注册该广播接收器 调用Context的unregisterReceiver(BroadcastReceiver receiver)。 21、Android支持的4种网络编程API: – 基于TCP的网络通信 • ServerSocket, Socket – 基于UDP的网络通信 • DatagramSocket, Datagrampacket, MulticastSocket – 使用URL访问网络 • URLConnection – 基于HTTP的网络通信 • HttpURLConnection, HttpClient (Apache) Android中建立网络连接、读取网路数据不能在UI线程中。 HttpURLConnection 连接代码(GET请求): HttpURLConnection conn = (HttpURLConnection) nnection(); uestMethod(“GET”); HttpURLConnection 断开代码: nect() 两种数据解析方式:XML和JSON 22、定位方式GPS与网络定位优缺点比较 GPS定位 • 利用手机里的GPS芯片通过卫星获得自己的位置信息 • GPS在室内基本定位不到 • 耗时长,因为要搜索卫星,接收卫星星历等信息 • 耗电快 • 精度高,大约10米 网络定位 • 耗时短 • 耗电少 • 精度低,几十米到几百米不等 Android 网络定位: – 基站 – Wi-Fi – IP地址 23、Android平台下传感器类型及分类 – 按测量物理量分类(官方提供了13个): • 加速度传感器(Accelerometer) • 方向/姿态传感器(Orientation) • 陀螺仪(Gyroscope) • 距离/接近传感器(Proximity) • 光传感器(Light) • 温度传感器(Temperature) • 磁场传感器(Magnetic Field) • 重力传感器(Gravity) • 线性加速度传感器(Linear Accelerometer) • 旋转矢量传感器(Rotation Vector) • 压力传感器(Pressure) – 按类别分三大类: • Motion Sensor 运动传感器 加速度,陀螺仪,重力,线性加速度,旋转矢量 • Environment Sensor 环境传感器 光,温度,压力,湿度 • Position Sensor 位置传感器 方向传感器(后被其它方法取代),磁场,距离 – 按数据来源分类: • 基于硬件的传感器 加速度传感器,陀螺仪 • 基于软件的传感器 线性加速度,重力,旋转矢量(也有可能是基于硬件实现的) 24、签名的必要性(为什么) (1)开发者的身份认证 其它开发者可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换 (2)保证信息传输的完整性 签名对于包中的每个文件进行处理,以此确保包中内容不被替换 (3)Android Market对软件的要求 签名的两种模式:调试模式(debug mode)和发布模式(release mode)。
版权声明:本文标题:Android知识点 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703460401h452353.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论