2018.5.23
1、常驻广播接收者和非常驻广播接收者
常驻广播接收者:使用AndroidManifest.xml注册广播接收者。接收者不随Activity销毁而销毁,也就是拥有独立的生命周期。
非常驻广播接收者:使用registerReceiver(receiver,intentFilter)对广播接收者进行注册。同时需要使用unregisterReceiver(receiver)注销这个广播接收者。注册时表示创建广播接收者,注销时表示销毁这个广播接收者。生命周期由开发者决定。通常在activity的onCreate方法中创建广播接收者,在onDestroy中销毁广播接收者。生命周期可控。
【案例】接收短信时,给出回应。使用非常驻型广播接收者。
(1)按常驻型广播接收者,来试验。体会app被关闭,广播接收者仍然有效。
(2)非常驻型广播接收者,来试验。体会app被关闭,广播接收者也被关闭了。
项目结构:
MyReceiver.java
MainActivity.java
androidManifest.xml
效果:
App开启时,可以观察短信;
App关闭后,不作出响应。
2、使用非常驻型广播接收者观察网络变化
应用场景:
当用户使用Wifi下载时,突然断网,如果继续下载将使用流量下载,对于用户来说是不安全的。应该有程序可以监控到网络状态变化,一旦切换到流量时,给出提示。
分析:
广播发出什么消息?网络切换的消息
接收者观察这个频道,当有网络切换时,作出响应。中断下载,提示现在正在使用流量。
【案例】接收“网络切换”的消息。
关注的频道:android.net.conn.CONNECTIVITY_CHANGE
MyReceiver.java
MainActivity.java
androidManifest.xml
测试:
飞行模式开关下:
3、使用广播实现桌面快捷方式的创建。
角色:广播发送消息。
接收者是android操作系统中定义的接收者。开发者无需关心。
【案例】使用广播发送消息,传递给桌面快捷方式创建者创建快捷方式。
核心是发送消息的频道(action),同时还要带有数据,数据包含了快捷方式图标、app的名称、其他信息(点击快捷方式会执行什么)。
项目结构:
activity_main.xml
MainActivity.java
androidManifest.xml
效果:
4、图片类的使用
Bitmap是android中经常使用的类。
用于构造一个图片,往往图片非常占用资源,很多情况下是使用sdcard保存图片,app加载图片,而不是将图片当成资源安装在应用中。
该类,可以用于创建图片,也可以从path路径中读取图片。
api:
CreateBitmap(),直接创建图片;
isRecycle(),判断是否回收,因为图片很占内存空间,所以用完需要回收。
recycle(),当bitmap实例不再使用就回收。
相关类:
BitmapFactory,用于创建图片的辅助工具类,也可以用于解析图片。
api:
decodeFile(path),可以将一个文件解析成一个图片
decodeStream(is),是一个输入流,将输入流解析成一个图片,下载图片时使用
decodeResource(resid),将resid引用的图片资源还原成图片。
【案例】使用decodeFile(path)从sdcard中获取图片加载到imageview上。
步骤:
(1)将图片放入到storage上
(2)使用BitmapFactory的decodeFile(path)获取图片
(3)将图片贴到界面上
activity_main.xml
MainActivity.java
androidManifest.xml
效果:
上传图片:
【作业】
收到某某广播消息,receiver就把UI上Imageview改成storage中的某某图片。
提示:receiver,不能够直接操作UI控件。使用handler处理。