广播(2018年5月30日)

2018.5.23

1、常驻广播接收者和非常驻广播接收者

常驻广播接收者:使用AndroidManifest.xml注册广播接收者。接收者不随Activity销毁而销毁,也就是拥有独立的生命周期。

非常驻广播接收者:使用registerReceiver(receiver,intentFilter)对广播接收者进行注册。同时需要使用unregisterReceiver(receiver)注销这个广播接收者。注册时表示创建广播接收者,注销时表示销毁这个广播接收者。生命周期由开发者决定。通常在activityonCreate方法中创建广播接收者,在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、图片类的使用

Bitmapandroid中经常使用的类。

用于构造一个图片,往往图片非常占用资源,很多情况下是使用sdcard保存图片,app加载图片,而不是将图片当成资源安装在应用中。

该类,可以用于创建图片,也可以从path路径中读取图片。

api

CreateBitmap(),直接创建图片;

isRecycle(),判断是否回收,因为图片很占内存空间,所以用完需要回收。

recycle(),bitmap实例不再使用就回收。

相关类:

BitmapFactory,用于创建图片的辅助工具类,也可以用于解析图片。

api

decodeFile(path),可以将一个文件解析成一个图片

decodeStream(is),是一个输入流,将输入流解析成一个图片,下载图片时使用

decodeResource(resid),resid引用的图片资源还原成图片。

【案例】使用decodeFile(path)sdcard中获取图片加载到imageview上。

步骤:

1)将图片放入到storage

2)使用BitmapFactorydecodeFile(path)获取图片

3)将图片贴到界面上

 

 

 

activity_main.xml

 

 

 

MainActivity.java

 

 

 

androidManifest.xml

 

 

 

效果:

 

 

 

上传图片:

 

 

 

【作业】

收到某某广播消息,receiver就把UIImageview改成storage中的某某图片。

提示:receiver,不能够直接操作UI控件。使用handler处理。

 

 

 

posted @ 2021-03-26 10:42  三生石头花  阅读(51)  评论(0编辑  收藏  举报