Android项目之广播(BroacastReceiver)与服务(Service)
来源:互联网 发布:读屏软件安卓版 编辑:程序博客网 时间:2024/06/05 07:47
前言:
在我写博客前再声明一下,我希望经过我同意装载我文章的某某某记得注明:(本文来自http://blog.csdn.net/qq_29269233),要尊重我的劳动成果,这样才能给我更多的支持和鼓励!今天我就接着上一篇博客:《Android项目之webview简单使用》,在上一篇博客的基础上添加自动启动并打开应用的功能!应用自启是利用了Broacastreceiver和service。
一、简单介绍:
BroadcastReceiver是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息,无法被用户直接感知,因为它工作在系统内部。BroadcastReceiver也叫广播,广播
的注册有两种方式:静态注册和动态注册。
Service是一种计算型组件,用于在后台执行一系列计算任务。由于Service组件工作在后台,因此也无法让用户直接感知到它的存在。Service分为两种工作状态,一种是启动
状态,主要用于执行后台计算;另一种是绑定状态,主要用于其他组件和service的交互。
(一)、BroadcastReceiver:
清单文件中配置:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
动态注册广播接收者
1.动态创建一个广播接收者
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.对广播接收者进行动态注册
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
3.取消注册
- 1
- 2
- 1
- 2
自定义广播发送(通过intent携带数据)
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
两种广播的区别
静态注册广播接收者在程序的整个运行期间都会监听。动态注册的广播接收者可以控制在需要的时候开启监听,不需要的时候关闭监听。通常可以将动态注册广播接收者放到一个服务中,服务开启时注册广播,服务关闭时取消注册。
.例子
常见系统广播
//监听系统启动广播
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
//监听短信
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
//获取管理员权限 MyAdminReceiver需要实现但是不用写内容
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
//监听创建快捷方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
//监听杀死所有进程
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
动态注册广播接收者(一般在服务中动态注册 重要)
适用情况: 广播接收者监听事件变化,有变化后就返回给服务,服务通过返回Bind或者写SharePrecefence等方法传出数据。
具体运用举例:
1.开启电话监听,监听来电去电 ,例如 黑名单,归属地查询等
2.程序加锁 ,监听当前栈顶程序是否被加锁
3.实时定位 ,不断读取当前定位信息
4.锁屏事件 ,监听到锁屏后可以做一些清理工作
5.和桌面上的Widget通信
(二)、Service:
注册一个服务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
开启一个服务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
注意事项
bindService绑定服务、unBindService解除绑定的服务;服务是在被绑定的时候被创建,调用oncreate、onbind方法;服务只能被绑定一次;服务只能被解除一次,接触绑定的时候调用onUnbind、onDestrory方法,如果多次解除绑定会抛出异常;推荐的方式(启用顺序):1.startService:开启并创建一个服务,服务长期运行在后台;2.bindService:绑定服务,可以调用服务里面的方法;3.unBindService:解除服务,停止服务里面的方法;4.stopService:停止服务,销毁服务对象;
二、说到这里应该都算了解BroacastReceiver和Service了,现在我就接着上一篇博客:《Android项目之webview简单使用》,在上一篇博客的基础上添加自动启动并打开应用的功能!
1、配置AndroidManifest
<!--服务--> <service android:name=".BootService" > </service> <!--广播--> <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
添加权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
2、BootBroadcastReceiver”广播监听类“BootBroadcastReceiver”
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/** * Created by Administrator on 2016/11/20 0020. */public class BootBroadcastReceiver extends BroadcastReceiver { // 系统启动完成 static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { // 当收听到的事件是“BOOT_COMPLETED”时,就创建并启动相应的Activity和Service if (intent.getAction().equals(ACTION)) { // 开机启动的Activity Intent activityIntent = new Intent(context, MainActivity.class); activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 启动Activity context.startActivity(activityIntent); // 开机启动的Service Intent serviceIntent = new Intent(context, BootService.class); // 启动Service context.startService(serviceIntent); } }}
3、开启Service设置
import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.support.annotation.Nullable;import android.widget.Toast;/** * Created by Administrator on 2016/11/20 0020. */public class BootService extends Service{ @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // Service被启动时,将会有弹出消息提示[c] Toast.makeText(this, "[开启我的服务]", Toast.LENGTH_LONG).show(); return super.onStartCommand(intent, flags, startId); }}
开机自启的效果如下:
1 0
- Android项目之广播(BroacastReceiver)与服务(Service)
- android服务(Service)与广播(Broadcast)
- Android个人每天总结.doc(day07四大组件之:广播接收者&服务Service)
- Android通过广播接收者调用服务(service)内方法
- Android之Service(服务)
- android之Service(服务)
- Android学习——服务Service与广播接收者BroadcastReciver
- Android之广播与服务<一>
- Android 广播与服务
- Android 广播与服务
- Android广播与服务
- Android小项目之--服务【Service】
- 【Android学习】Android服务之Service(1)--Service初步
- android四大组件之服务(Service)
- Android之Service(一):服务简介
- Android四大组件之服务(service)
- Android Service 之启动服务( startService() )
- Android视频学习(六):广播与服务1
- #Paper Reading# An Information Retrieval Approach for Chatbot Engines Using Unstructured Documents
- Retinex、log对数变换、直方图均衡化区别,边缘增强Retinex算法与拉普拉斯算法联系、均衡化与亮度调节算法、大津阈值计算
- Matlab Tips1
- Homework 3
- 读《程序是怎样跑起来的》
- Android项目之广播(BroacastReceiver)与服务(Service)
- 函数变换法生成随机变量的原理梳理
- 剑指offer|面试题5:从尾到头打印链表(Java代码)
- -D_REENTRANT编译选项的作用
- matlab之fopen,fread,fclose,fwrite
- SharedPreferences详解
- CentOS 7搭建LAMP环境(二)
- HTML基础点
- Nginx下css的链接问题