Android基础考试知识点清单

爷,独闯天下 提交于 2021-01-18 10:38:43

第1章 Android应用开发环境

1.了解智能手机常见操作系统有哪些,了解Android和iOS两大操作系统的特点。
2.掌握Android操作系统的四层体系结构及各层的内容。
Linux内核 Android系统内核建立在Linux 2.6 之上。
Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。
函数库
这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
应用程序框架层 Android应用程序框架提供了大量API供开发者使用。
应用程序层 开发者开发的各种Android App。






3.Android应用程序开发经常用到的组件有哪些,它们的作用是什么。
四大应用组件
Activity:主要负责显示内容
Service:后台运行程序
BroadcastReceiver:消息接收器
ContentProvider: 负责跨应用的数据交换
Intent:不同组件间通信的载体





4.掌握Android开发环境的搭建。
开发IDE:Android Studio
可通过环境变量改变安装位置:
ANDROID_HOME: SDK安装文件夹
ANDROID_SDK_HOME:虚拟机文件夹



5.了解Android模拟器的使用。

第2章 Android应用的界面编程

1.熟练掌握LinearLayout、RelativeLayout、FrameLayout、TableLayout、GridLayout、AbsoluteLayout、ConstraintLayout这7种布局管理器的使用。能根据实际情况选择合适的布局管理器进行UI界面的设计。

LinearLayout
线性布局 将子控件在容器中按照水平或垂直方向排列开来。
orientation:设置容器内控件的排列方向
gravity:设置容器内控件的对齐方式
layout_gravity:设置子控件在父容器中的对齐方式
layout_weight :权重




TableLayout
表格布局 TableLayout派生自 LinearLayout,相当于垂直方向的LinearLayout。
TableRow表格行,也派生自 LinearLayout,相当于水平方向的LinearLayout。
每一行上可放置数量不同的控件。
隐藏列 android:collapseColumns
收缩列 android:shrinkColumns
拉伸列 android:stretchColumns
注:列号从0开始,0号列是第1列。






FrameLayout
帧布局 根据对齐方式把控件一个一个叠加在在一起。
先定义的在底层,后定义的在上层。

GridLayout
网格布局 行号、列号均从0开始

RelativeLayout
相对布局 容器内子控件由相对于兄弟控件、父容器的位置来确定。

AbsoluteLayout
绝对布局 通过X,Y坐标来控制控件位置layout_x, layout_y

常用的距离单位
px :像素
dp(dip): 设备独立像素
sp :设置字体大小时用
In、mm、pt



ConstraintLayout约束布局 约束布局相当于相对布局的升级版,可控制位于父容器的百分比处。是Android的默认布局

Android 控制UI界面的三种方式
1.使用XML布局文件控制UI界面
google 推荐
setContentView(R.layout.<布局资源文件名字>)
findViewById(R.id.android:id属性值)
2.在Java代码中开发控制UI界面
setContentView(一个View实例)
addView()
3.混合使用XML布局文件和Java代码混合控制UI界面
复杂界面中常用。变化小,行为较固定的控件放到XML文件中管理;变化多,行为控制比较复杂的交给Java代码管理








2.掌握布局管理器的嵌套使用。

3.熟练掌握Android中常用控件的常用属性及操作方法。
TextView文本框、EditView编辑框、
ImageView( src显示的drawable对象的ID;scaleType如何缩放和移动图片)、
Button普通按钮、ImageButton图片按钮、
RadioGroup单选按钮组、RadioButton单选框、CheckBox复选框、
Spinner列表选择框(弹出)、
TimePicker时间选择器(派生自FrameLayout )、
DatePicker日期选择器(派生自FrameLayout )、
NumberPiker数值选择器(通过拖动或输入来选择数值)、







4.掌握Android中高级控件
ToggleButton状态开关按钮、Switch开关(通常用于切换程序中的某种状态)
ScrollView滚动视图(只能包含一个组件,并为该组件添加垂直滚动条)
HorizontalScrollView 水平滚动条、
AdapterView、
ListView列表视图、
RecyclerView(灵活实现水平或垂直滚动,ListView的升级,实现更多功能,比如横向滑动,回收利用)、
ExpandableListView可展开的列表组件(与Adapter类似,有三种实现方式:BaseExpandableListView,Simple~(List),SimpleCursorTreeAdapter(Cursor))、
AutoCompleteTextView自动完成文本框(completionThresold属性设置用户至少输入几个字符才会显示提示)、
StackView(以堆叠的方式显示多个列表项)、
CalendarView日历视图(firstDayOfWeek设置每周的第一天;shownWeekCount设置总共显示几周)、
SearchView搜索框、
AlertDialog对话框、
对话框通常不充满屏幕,对话框不会自动关闭
对话框出现时,当前Activity的界面继续显示但不能进行交互
对话框不是一个视图,基类是Dialog继承自Object
创建步骤:
(1)创建AlertDialog.Builder(创建器)
(2)利用Builder为对话框设置图标、标题、内容
(3)调用Builder的create()方法创建对话框
(4)调用对话框的show()方法显示对话框
特殊对话框:DatePickerDialog、TimePickerDialog、ProgressDialog




















ProgressBar进度条、
SeekBar拖动条(thumb自定义滑块图片;tickMark自定义刻度图标;监听器OnSeekBarChangeListener( ))、
RatingBar星级评分条(rating属性设置评分条默认星级;numStars设置总星数)、

Toast信息提示框、
toast.makeText(Context, String, Toast.LENGTH_SHORT).show()

ImageSwitcher、TextSwitcher、
Gallery、TabHost选项卡、PopupWindow(弹出窗口,类似于对话框)、
Chronometer计时器( setBase(long),setFormat(String),start(),stop(),setOnchronometerTickListener())、
AnalogClock模拟时钟(已标记为过时 )、
TextClock数字时钟(本质就是一个TextView)



Menu菜单、
与Activity相关的叫选项菜单,在显示Activity时按MENU键弹出,选项菜单在超过6项时,最后一项将显示成“更多”;
与具体视图相关的菜单叫上下文菜单,长按视图将弹出;
android:checkableBehavior 用于定义group中菜单项的可选特征:
single 表示菜单项为单选
all 表示所有菜单项都是可勾选的(复选框)
none 表示所有菜单项都不可勾选
Notification通知(具有全局效果的通知,显示在手机状态栏上)、
(1)通过 getSystemService()获取NotificationManager服务
(2)通过Notification.Builder构造Notifcation对象
(3)利用NotificationChannel发送通知
AdapterViewFlipper(继承自AdapterViewAnimator,实现视图之间切换时的渐隐渐现的效果:autoStart设置自动播放;flipInterval播放间隔;showPrevious()显示前一项;showNext( )显示下一项 )










5.了解通过Java代码进行简单的控件创建和操作。
private Button mBtn; //1声明控件
mBtn=findViewById(R.id.btn); //2找到控件
mBtn.setOnClickListener(new View.OnClickListener() { //3声明点击事件
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this,“btn被点击了”,
Toast.LENGTH_SHORT).show(); } });
6.掌握一个Android项目中各个文件夹(如:src、res等)的作用。
java目录
java或kotlin源代码存放目录,如MainActivity.java等。
res资源(resource)目录。
该目录中存放应用使用的各种资源(xml界面文件、图片或值资源等)。如界面布局文件activity_main.xml。
AndroidManifest.xml 应用程序清单文件。
该文件列出了应用程序的包名(该包名将会作为该应用的唯一标识),
列出了应用程序所提供的功能,
开发的四大组件需要在该文件中进行配置。
如果应用使用到了系统内置的应用(如电话服务、短信服务、互联网服务、GPS服务等),也需在该文件中声明使用权限。
R.java文件(相当于资源字典、资源清单)
这个文件由Android开发工具自动生成。 Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手动修改R.java。
R.java在应用中起到了资源字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。
apk文件
编译之后的安装文件





















7.掌握一个Android项目中各个文件(如:main.xml、R.java、AndroidManifest.xml等)的作用,并能看懂文件里面的内容。
Android程序源代码分为三类: XML布局文件,Java源文件,资源文件
res目录中的资源,R类中生成索引
assets目录放置原生资源


8.了解Android各种资源(如:字符串、颜色、尺寸资源,数组资源,Drawable资源,布局资源,菜单资源,样式资源等)的作用,会使用简单的Android资源。
在xml中引用Drawable资源:@drawable/资源名
Drawable资源文件示例

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true">
    <shape>
      <solid android:color="#AA6600"/>
      <corners android:radius="5dp"/>
    </shape>
  </item>
</selector>

第3章 Android事件处理

1.掌握Android中事件处理的基本原理(基于监听的事件处理和基于回调的事件处理)。
基于监听的事件处理(处理特定事件,Android中,基于监听的事件处理被优先调用。)
处理方式:委派式事件处理
步骤:获取界面组件对象,实现事件监听器,将监听器绑定到组件对象上。
3个对象:Event Source事件源:通常为组件;Event事件:用户的一次操作;Event Listener事件监听器: 对事件作出响应
4个实现监听器的形式:内部类作为监听器,外部类作为监听器,Activity本身作为事件监听器,Lambda表达式作为事件监听器类
基于回调的事件处理(处理通用性事件,事件源与事件监听器是统一的) 重写Activity或组件的回调方法
每个回调方法都返回一个boolean值
若回调方法返回true, 表明该事件已处理完成,事件不会传播出去;
若回调方法返回false, 表明该事件未处理完全,事件会传播出去。








2.熟练掌握Android中常用的事件处理接口及其实现。
View.OnClickListener单击事件接口
View.OnLongClickListener长按事件
View.OnKeyListener按键事件
View.OnFocusChangeListener焦点改变事件
View.OnTouchListener触摸事件
RadioGroup.OnCheckedChangeListener单选改变事件
AdapterView.OnItemSelectedListener子项选中事件
DatePicker.OnDateChangedListener日期改变事件
TimePicker.OnTimeChangedListener时间改变事件








3.掌握Android中事件处理的注册方法。
Configuration类:用于描述手机设备的配置信息
调用Activity有成员方法获得Configuration类对象
Configuration cfg = getResources().getConfiguration();
补充:mcc国家码、mnc网络码



4.了解Handler等类的工作原理。
Hander 在新启动的线程中发送消息
在主线程中获取、处理消息

Looper
每个线程最多拥有一个Looper,它的loop方法负责读取MessageQueue中的消息
负责管理消息队列中的消息
主UI线程中,系统已经初始化了一个消息队列和Looper


MessageQueue
消息队列,采用先进先出的方式管理Message

handler发送的消息被送到指定的消息队列
handler所处的线程中必须有一个消息队列

子线程中添加消息循环 Looper looper=Looper.prepare( );//创建looper对象
@override重写handleMessage方法;
Looper.loop( );//启动Looper …
handler.sendMessage(msg); …


第4章 深入理解Activity与Fragment

1、掌握创建、配置、启动、关闭Activity的方法
创建Activity
(1)创建一个派生自Activity或其子类的类
(2)复写回调方法:onCreate(),通常调用setContentView()设置视图的布局文件
(3)在AndroidManifest文件中配置
配置Activity
Android程序中每个Activity都要在AndroidManifest.xml文件中进行配置





<activity  android:name=“.ActivityName”/>

启动Activity
通过Intent对象表明跳转的意图:

Intent intent=new Intent(fromActivity.this, toActivity.class);

跳转到另一个Activity:
方法①startActivity(Intent);
启动另一个Activity并等待返回结果:
方法②startActivityForResult(Intent intent, int requestCode);
关闭Activity
方法①关闭当前Activity:finish()
方法②关闭finishActivity(int requestCode)
与startActivityForResult配对使用






2、掌握Activity之间交换数据的方法
使用Intent在Activity之间交换数据
关系类比: Intent:轮船,Bundle:集装箱,Data:货物
putExtras(Bundle data):向Intent中放入数据包
putXxx(String key, Xxx value):向Bundle中放入数据
putSerializable(String key, Serializable value)
Bundle getExtras():从Intent中取出数据包
putExtra(String key, Xxx value):向Intent中放入一个数据
getXxxExtra():从Intent中取出一个数据







3、理解Activity的4种生命状态及7个生命周期函数的调用时机
加载Activity
onCreate(Bundle): 创建时被调用,只会被调用一次
onStart() : 启动Activity时被调用
onResume():Activity获得焦点之前被调用/恢复Activity时被调用/该Activity再次回到前台
运行状态:位于前台,用户可见,可以获得焦点
onPause(): 另一个Activity获得焦点之前被调用/另一个Activity转入前台
暂停状态: 其它Activity位于前台,该Activity依然可见,不能获得焦点
onStop(): Activity不可见时被调用
停止状态:不可见,失去焦点,再次启用需要调用onCreate()
onRestart():重新启动Activity被调用,之后调用onStart()
onDestroy(): 销毁Activity时被调用
销毁状态: 结束
注:①多个Activity存在Task(栈)中
②Activity的4种加载模式
standard: 标准模式,每一次都创建实例,默认
singleTop: 在栈顶时直接复用已有的实例
singleTask:同一Task只保留一个实例
singleInstance: 只保留一个实例

















4、掌握Fragment的创建及在Activity中的使用方法
Fragment作为Activity界面组成的一部分出现, 必须嵌入Activity中才能起作用。
可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。
在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())
Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。



getActivity(): 获得Fragment所在的Activity
findFragmentById(int id):找出Activity中包含的Fragment对象
Activity向Fragment传递数据:
将数据装入Bundle对象,调用 Fragment的setArguments(Bundle)
Fragment向Activity 传递数据
在Fragment中定义一个接口,在Activity中实现
Activity通过FragmentManager管理Fragment
Fragment以事务的方式来管理
FragmentTransaction ft= getFragmentManager().beginTransaction();

ft.commit();
Fragment生命周期受所在Activity生命周期控制
onAttach()当Fragment被添加到Activity时被调用,该方法只会被调用一次
onDetach()Fragment与Activity分离时调用












第5章 使用Intent和IntentFilter进行通信

1、掌握Intent的各个属性(Component、Action、Category、Data、Type、Extra、Flag)的特点与应用;
使用Intent启动系统组件
startActivity(Intent)
startActivityForResult(Intent, int)
startService(Intent)
bindService(Intent,…)
sendBroadcast(Intent)
sendOrderedBroadcast(Intent, …)






7个属性
Component 指明此属性的为显式Intent:
ComponentName comp=new ComponentName(
FirstActivity.this, SecondActivity.class);
Intent intent = new Intent();
intent.setComponent(comp);
startActivity(intent);
没有指定的为隐式Intent,不指定组件名称,通常用于激活其它应用程序中的组件:google推荐√
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);








Action Action是一个字符串,代表一个抽象动作
标准Acitivity动作:表示将要执行的动作
标准广播动作:表示已经发生即将报告的动作
intent.setAction()


Category Category是一个字符串,为Action增加额外的附加类别信息

Data 通常用于向Action属性提供操作的数据,接收一个Uri对象
intent.setData(uri);

Type 用于指定Data属性的数据类型(MIME类型)
intent.setType(“abc/xyz”)
这两个属性会相互覆盖,后设置的覆盖前设置的,如果需要都设置,则用intent.setDataAndType(data, type)

Extras 通常用于在多个Action之间交换数据,其值应该时一个Bundle对象(相当于Map对象),它可以存入多个key-value对。
intent.putExtras(Bundle b)
Bundle b=intent.getExtras()
intent.putXXX()
intent.getXXXExtra()



Flags Flag是一个整数,表示不同来源的标记,多用于指示Android系统如何启动Activity,以及启动后如何对待
AddFlags()方法添加控制旗标

2、了解通过Action和Category、Data启动系统组件的方法,如返回桌面、拔打电话、发送短信、浏览联系人、浏览网页等
intent-filter:由哪个Activity来完成抽象动作
过滤Action、Category、Data
一个intent只能包含一个Action
一个intent可以包含多个category
一个Activity可以包含多个Action




第8章 数据存储

1.了解Android中四种数据存储的特点。

2.熟练掌握SharedPreferences存储数据的操作。
该接口主要负责读写应用程序的Preference数据,其中数据为key-value对
获取SharedPreferences实例:
context.getSharedPreferences(String name, int mode),其中mode:
Context.MODE_PRIVATE:数据只能被本应用程序读写
Context.MODE_WORLD_READABLE:可被其它应用程序读取
Context.MODE_WORLD_WRITABLE:可被其它应用程序读写
读取数据:
boolean contains(String key),判断是否包含键值为key的数据
abstract Map<String, ?> getAll(),获取SharedPreference中的全部数据
boolean getXxx(String key, Xxx defValue),获取某个数据
写入数据:
通过SharedPreferences的内部接口Editor完成,调用 edit()方法获得该对象
Editor clear():清空所有数据
Editor putXxx(String key, xxx value):存入
Editor remove(String key):移除
boolean commit():编辑完成后,提交修改
数据保存:
SharedPreferences数据为XML文件,
保存在/data/data/<package_name>/shared_prefs目录下


















3.会使用文件进行数据存储(包括SD卡上文件的读写)。
Context提供如下方法打开应用程序的数据文件夹里的文件IO流:
FileInputStream openFileInput(String name):获得输入流
FileOutputStream openFileOutput(String name, int mode) :获得输出流
其中mode有4个取值:
MODE_PRIVATE,MODE_APPEND(追加方式打开,可追加内容)
MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE
getDir(String name, int mode):在当前应用沙盒中获取或创建name文件夹
File getFilesDir():获取沙盒的绝对路径
File[] fileList():获得沙盒下所有文件列表
deleteFile(String):删除指定的文件
SD卡上文件的读写:
①动态请求获取读写SD卡的权限:
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0x123);
②判断是否插入了SD卡:boolEnvironment.getExternalStorageState().
equals(Environment.MEDIA_MOUNTED)
③获取外部存储器(SD卡目录):
Environment.getExternalStorageDirectory()或直接使用: /mnt/sdcard
【mkssdcard命令可以创建虚拟存储卡】
④使用FileInputStream、FileOutputStream、Filereader或Filewriter进行读写操作
【为了读写SD卡上的数据,必须在清单文件里设置权限】























DOM解析
DOM 是 W3C(万维网联盟) 的推荐标准。
整个XML文档包含一个文档节点,若干个元素节点,下面有若干个文本节点
解析时将整个文档加载到内存中,从根节点开始解析
SAX解析



是一种基于事件驱动的api,有两个部分,解析器和事件处理器
XMLReader接口,负责读取XML文档,ContentHandler 接口,负责对发送的事件响应和进行XML文档处理。一般的解析器继承自DefaultHandler类

mlPullParser
PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON 语法规则:JSON 语法是 JavaScript 对象表示语法的子集。
数据在键/值对中,数据由逗号分隔,花括号保存对象,方括号保存数组。
JSON对数据的描述性比XML较差,JSON的速度要远远快于XML 。


4.熟练掌握SQLite数据库的使用,并可以使用SQLite数据库进行CRUD操作。
轻量级,嵌入式,适用于资源有限的设备,不需要“安装”,单一文件 ,跨平台/可移植性,弱类型的字段,开源:www.sqlite.org
使用SQLiteDataBase进行数据库操作的步骤:
获取SQLiteDataBase对象,它代表了一个与数据库的连接;
调用SQLiteDataBase中的方法执行SQL语句;
操作SQL语句执行的结果;
关闭SQLiteDataBase,回收资源。
打开一个文件对应的数据库:
①static SQLiteDataBase openDataBase(String path,
SQLiteDataBase.CursorFactory factory, int flags)
②static SQLiteDataBase openOrCreateDataBase(File file,
SQLiteDataBase.CursorFatory factory)
③static SQLiteDataBase openOrCreateDataBase(String path,
SQLiteDataBase.CursorFatory factory)
增:insert(String table,String nullColumnHack,ContentValues Values)
删:int delete(String table, String whereClause, String[ ] whereArgs)
改:int update (String table, ContentValues values, String whereClause,String[ ] whereArgs)
查:Cursor rawQuery(String sql, String[] selectionArgs)
















第9章 使用ContentProvider实现数据共享

1、理解ContentProvider组件的功能和作用;
ContentProvider提供了数据读写的统一接口
使用ContentProvider可以在不同应用程序之间共享数据
ContenProvider以表的形式组织数据


2、掌握开发、配置ContentProvider的方法;
建立数据存储系统
继承ContentProvider类来提供数据访问方式:onCreate(),insert(),delete(),update(),query() ,getType()
在AndroidManifest文件中声明ContentProvider


3、掌握使用ContentResolver调用ContentProvider的方法;
应用程序通过ContentResolver操作ContentProvider共享的数据
ContentProvider是单实例模式
getContentResolver():获取ContentResolver对象
ContentProvider的数据发生改变:
getContext().getContentResolver(). notifyChange(uri, null);
监听ContentProvider的数据改变





  1. 继承ContentObserver类,复写onChange(boolean selfChange)方法
  2. 向Uri注册ContentObserver监听器

4、会使用Android操作系统提供的ContentProvider进行操作,如联系人、多媒体。
使用ContentProvider管理联系人
声明许可:
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
所需的Uri:
管理联系人: ContactsContract.Contacts.CONTENT_URI
管理联系人的电话:
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
管理联系人的Email:
ContactsContract.CommonDataKinds.Email.CONTENT_URI









第10章 Service与BroadcastReceiver

1.掌握Service组件的用法。会创建、配置、启动、停止Service,能绑定本地Service并与之通信。了解Service的生命周期。
与Activity相似,代表可执行的应用程序
需要从Service类派生出子类
Service具有自己的生命周期
Service也需要在manifest.xml文件中注册
Service 也是由Context类派生出来
Service在后台运行,没有用户界面
Service不是一个独立的进程,和应用程序在同一个进程中
Service也不是一个独立的线程,所以有耗时操作在Service里时,就必须开启一个单独的线程来处理







创建Service 的步骤:
实现Service类的子类
在manifest.xml中注册Service组件
创建、配置Service
继承Service类,复写其生命周期函数:
void onCreate( ) : 创建Service后回调该方法
void onStartCommand(Intent intent, int flags, int startId): 通过startService()启动Service时都会回调该方法
void onDestroy( ) : 当Service 被关闭之前
abstract IBinder onBind( ):绑定Service时调用, Service子类必须实现该方法
boolean onUnbind( ):解除绑定时调用
启动与停止服务
启动Service
Intent intent=new Intent(this, oneService.class);
startService(intent);【显式】
Android 5.0后只能显式启动Service
停止Service
stopService(Intent)
stopSelf(id)
绑定本地Service并与之通信
①Activity端
bindService(Intent intent, ServiceConnection conn, int flags)
unbindService(ServiceConnection conn)
②Service端
IBinder onBind(Intent intent)
boolean onUnbind(Intent intent)
③ServiceConnection 接口
onServiceConnected(ComponentName name, IBinder binder)
onServiceDisconnected(ComponentName name)


























生命周期
①StartService:onCreate()➡onStartCommand()➡onDestroy()
②bindService:onCreate()➡onBind()➡onUnbind()➡onDestroy()

2.掌握常用的系统Service(如:TelephonyManager、SmsManager、ActivityManager、AlarmManager等)的功能和用法
TelePhonyManager
获得系统服务:getSystemService(id)
管理手机通话状态、电话网络信息等:
TelePhonyManager tManager=
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
监听手机来电:
监听器:PhoneStateListener { onCallStateChanged() }
绑定:tManager. listen(PhoneStateListener listener, int event)
SmsManager
SmsManager sms=SmsManager. getDefault( );
AlarmManager
手机闹钟,定时功能 ,
定时更换壁纸WallpaperManager【权限:android.permission.SET_WALLPAPER】
Context.getSystemService(Context.ALARM_SERVICE).
设置闹钟:
void set(int type, long triggerAtTime, PendingIntent operation)
ActivityManager
获得正在运行的进程的信息
ActivityManager actManager=
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);



















3.了解PendingIntent的作用,会利用PendingIntent发送Notification和发送短信。

4.理解BroadcastReceiver组件的作用。会开发、配置BroadcastReceiver组件,掌握普通广播和有序广播的区别,会使用BroadcastReceiver接收有序广播。
BroadcastReceiver系统全局的广播消息接收器
拥有自己的进程,时刻监听程序发出的广播
创建BroadcastReceiver:
(1) 继承BroadcastReceiver类, 复写onReceive(Context context, Intent intent) 方法
(2) 在manifest.xml中注册BroadcastReceiver
(3) 配置intent-filter:
①在manifest.xml中

<action android:name=“eg.broadcast.test”

②在JAVA程序代码中设置:
MyReceiver receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(“eg.broadcast.test”);
registerReceiver(receiver, filter);
发送广播:
创建Intent对象
sendBroadcast(intent); 普通广播
sendOrderedBroadcast(intent); 有序广播
有序广播: 根据优先级,依次接收广播
设置级别:
(1) android:priority -1000~1000
(2) 调用IntentFilter对象的SetPriority()
接收到广播的receiver可以终止广播:
调用BroadcastReceiver对象的abortBroadcast( )方法
也可以将本次处理的结果存入广播中, 传给下一个接收者:
setResultExtras(Bundle) // 向广播中加入消息继续广播
getResultExtras(Bundle) // 取出广播中附加的消息
开机自动运行的Service:
BroadcastReceiver接收Action为ACTION_BOOT_COMPLETED常量的Intent
短信提醒:
android.provider.Telephony.SMS_RECEIVED
手机电量提示:
ACTION_BATTERY_CHANGED
ACTION_BATTERY_LOW


































易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!