Android学习笔记 13 Broadcast & Service(part.1)
来源:互联网 发布:mama颁奖典礼投票软件 编辑:程序博客网 时间:2024/06/06 13:04
Day13 Broadcast & Service
Broadcast 广播
- 基本步骤
- 权限
- 广播类型
- 内部、外部Receiver
Service 服务
Broadcast
- 基本步骤
- 权限
- 广播类型
- 内部、外部Receiver
- 本地、系统广播
- 常用系统广播
基本步骤
接收系统广播(三大要素:广播的Action、接收广播的权限、广播中包含的数据)
1)自定义广播接收器类,继承BroadcastReceiver,并重写onReceive()方法 2)注册广播接收器,同时通过IntentFilter声明广播接收器可以接收的广播频道(Action) 3) 在广播接收的方法中,实现相关的操作(注:在UI线程中执行的)
//注册广播接收器 registerReceiver(BroadcastReciver, IntentFilter) //自定义广播接收器 class MyReciver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //接收到广播后执行的代码 } }
权限
在XML配置文件中声明和使用权限
在java代码中发送带有权限的广播
<!-- 定义权限 --> <permission android:name="com.qf.permission.print" /> <!-- 使用权限 --> <uses-permission android:name="com.qf.permission.print" /> <!-- android:permission 设置接收的广播是带有权限的(发送广播端必须使用此权限) android:exported="false" 不接收外部应用发送的广播 --> <receiver android:name="com.qf.broadcastreceiver04.MyReceiver03" android:permission="com.qf.permission.print" android:exported="false" > <!-- 通过priority属性设置接收广播的优先级(范围: -1000~1000) --> <intent-filter android:priority="100" > <action android:name="com.qf.broadcast.print" /> </intent-filter> </receiver>
//发送权限广播 sendBroadcast(Intent(ACTION), Pomission); //注册特定权限的接收器 registBroadcast(Intent, Pomission);
广播类型
//发送普通广播 sendBroadcast(new Intent(Config.ACTION_PRINT)); //发送有序广播 sendOrderedBroadcast(new Intent(Config.ACTION_PRINT),Config.PERMISSION); //发送权限广播 sendOrderedBroadcast(new Intent(Config.ACTION_PRINT),Config.PERMISSION); //指定包名的广播(通过Intent) Intent.setPackage(String Package)
内部、外部Receiver注意
内部类形式的Receiver需要在代码中注册
外部类形式的Receiver需要在XML配置中声明
本地、系统广播
本地广播 LocalBroadcastManager
所在包:android.support.v4.content
- LocalBroadcastManager.getInstance(Context)
- registReceiver(BroadcastReceiver,IntentFilter)
- sendBroadcast(Intent)
- sendBroadcastSync(Intent intent)
- unregisterReceiver(BroadcastReceiver receiver)
常用系统广播
注意:系统广播要严格按照官方API的说明方式使用
- Intent.ACTION_BOOT_COMPLETED 系统开机启动完成
- Intent.ACTION_SHUTDOWN 关机提醒广播
- Intent.ACTION_BATTERY_LOW 低电量提醒广播
- Intent.ACTION_BATTERY_CHANGED 电量发生变化广播 ==(仅支持代码中注册)==
- Intent.ACTION_SCREEN_OFF 屏幕被关闭
- Intent.ACTION_SCREEN_ON 屏幕已经被打开
- Intent.ACTION_USER_PRESENT 屏幕解锁广播
- Intent.ACTION_NEW_OUTGOING_CALL 拨号广播
- TelephonyManager.ACTION_PHONE_STATE_CHANGED 来电时电话状态变化广播,如响玲、空置、挂断
- Telephony.Sms.Intents.SMS_RECEIVED_ACTION 接收短信的广播
Service 服务
- 概念
- 生命周期
- 基本使用方法
概念
运行在后台的服务,所谓后台即没有界页;作为四大组件之一,其是运行在主线程中的
生命周期方法
- ==
onCreate()
== - ==
onStartCommand
== - ==
onDestroy()
== - ==
onBind()
==
public void onCreate() { //只执行一次,用于初始化Service super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // 每次启动Service都会执行的方法,在此实现核心的功能 return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { //只执行一次,用于销毁Service组件 super.onDestroy(); Log.i("debug", "onDestroy"); } @Override public IBinder onBind(Intent intent) { //必须实现的方法,保持空即可 return null; }
基本使用方法
1) 创建Service子类,并重写三个核心的生命周期方法
* onCreate()
* onStartCommand()
* onDestroy()
注:必须实现onBind()抽象方法,此方法是用于绑定服务组件时使用,startService方式无须实现其功能。2) 注册Service组件–manifest文件中注册
3) 启动和停止Service组件
//创建意图 Intent serviceIntent=new Intent(getApplicationContext(),MyService.class); //启动服务 startService(serviceIntent); //关闭服务 stopService(serviceIntent);
<!-- 注册Service组件 --> <service android:name="com.qf.service01.MyService"/>
0 0
- Android学习笔记 13 Broadcast & Service(part.1)
- Android学习笔记 Service(part.2)
- Android学习笔记 - Broadcast
- Android学习笔记 - Broadcast
- 【Android学习笔记】Broadcast receiver
- 【Android学习笔记】Service学习(1)
- android插件化(BroadCast、Service篇)
- android service broadcast notification
- android service and broadcast
- android的Broadcast Service
- Android学习笔记(五)广播(Broadcast)
- Android学习笔记14——Broadcast机制(一)
- Android学习笔记15——Broadcast机制(二)
- Android学习笔记(二)--------浅谈Broadcast 广播
- android学习笔记(三)四大组件Broadcast Receiver详解
- android学习笔记(三)四大组件Broadcast Receiver详解
- Service个人笔记3(broadcast调用Service方法)
- Android学习笔记 - 广播篇 (Broadcast)
- linux应用编程笔记(9)无名管道编程
- 数据库三范式
- B树、B+树、B*树
- Myeclipse中如何修改svn用户名密码
- spring 多数据源注解事务使用
- Android学习笔记 13 Broadcast & Service(part.1)
- Ubuntu 目录操作--未完成
- 【转】10年软件测试工作总结
- Java Web Filter 详解
- Qt中Model/View
- 从Qt谈到C++(一):关键字explicit与构造函数
- 字符串
- Qt C++中的关键字explicit
- eclipse下设置tomcat,修改Java代码不必重启tomcat