欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

05-android-广播定位

程序员文章站 2022-07-03 17:48:55
广播Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcasttReceiver指的就是广播接收者(广播接收器),广播作为Android主件间的通信方式,可以使用的场景如下:1. 同一app内部的同一组件内的消息通信(单个或多个线程之间),2. 同一app内部的不同组件之间的消息通信(单个进程);3. 同一app具有多个进程的不同组件之间的消息通信,4. 不同app之间的组件之间消息通信5. android系统在特定情况下与APP之间的消息通信,BroadcastR...

广播

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcasttReceiver指的就是广播接收者(广播接收器),广播作为Android主件间的通信方式,可以使用的场景如下:
1. 同一app内部的同一组件内的消息通信(单个或多个线程之间),
2. 同一app内部的不同组件之间的消息通信(单个进程);
3. 同一app具有多个进程的不同组件之间的消息通信,
4. 不同app之间的组件之间消息通信
5. android系统在特定情况下与APP之间的消息通信,

BroadcastReceiver总体上可以分为两种注册类型:静态注册和动态注册,

  1. 静态注册:
    直接在AndroidManifest.xml文件中进行注册
    05-android-广播定位
    1、android:exported—此broadcastReceiver能否接收其他App的发出的广播,其默认值是由receiver中有无intent-filter决定的,如果有intent-filter,默认值为true,否则为false。
    2、android:name—此broadcastReceiver类名;
    3、android:permission——如果设置,具有相应权限的广播发送方发送的广播才能被此broadcastReceiver所接收;
    4、android:process——broadcastReceiver运行所处的进程。默认为app的进程。可以指定独立的进程

05-android-广播定位
动态注册
动态注册时,无须在AndroidManifest中注册组件,直接在代码中通过调用Context的registerReceiver函数,可以在程序中动态注册BroadcastReceiver
05-android-广播定位

静态广播和动态广播的区别

  1. 动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级由多低,
  2. 在同一个优先级下,谁先启动的快,谁将先接受到广播 ,
  3. 动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期(在activity结束前,移除广播),静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行,

PendingIntent

PendingIntent是一个特殊的Intent,主要区别是Intent是立马执行,PendingIntent是待确定的Intent,PendingIntent的操作实际上是传入的Intent操作,使用PendingIntent的目的主要是用于所包含的Intent执行是否满足某些条件,
获取PendingIntent获取由三种方式

  1. getActivity(Context,context,int requestCode,Intent,intent,int flags).取得一个用于启动一个Activity的PendingIntent对象,
  2. getService(Context,context,int requestCode,Intent,intent,int flags)取得一个用于启动一个Service的PendingIntent对象,
  3. getBroadCast(Context,context,int reequestCode,Intent,intent,int flags)取得一个用与向BroadCastReceiver发送广播的PendingIntent对象
  4. 以广播的形式说明getBroadCast(context,context),int requestCode,Intent intent ,int flags);第一个参数是上下文,第二个参数是每次requestCode不同,就能产生多个PendingIntent ,第三个参数是用来存储信息,第四个参数是对不同操作标识
  5. PendingIntent的flags参数,
  6. FLAG_CANCEL_CURRENT:如果PendingIntent已经存在,那么就会取消当前的PendingIntent,从而创建一个新的PendingIntent
    2.FLAG_UPDATE_CURRENT:如果PendingIntent已经存在,让新的Intent更新之前,Intent对象数据,例如更新Intent中的Extras,另外,我们也可以在PendingIntent的原进程中调用,PendingIntent的cancel()把其从系统中移除掉,
  7. FLAG_NO_CREATE:如果PendingIntent已经存在,那么将不进行任何操作,若描述的Intent不存在直接返回NULL(空)
    8.FLAG_ONE_SHOT:该PendingIntent只作用一次,在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()方法进行销毁,那么如果你再调用send()方法的话将会失败,系统将会返回一个SendIntentException

LocationManager常量

LocationManager常量可在Intent中携带,

  1. LocationManager.KEY_LOCATION_CHANGED更新的位置消息,
  2. LocationManager.KEY_PROVIDER_ENABLED启用和禁用提供者时广播事件的标记
  3. LocationManager.KEY_PROXIMITY_ENTERRING指明接近警报进入和退出的时机,
  4. LocationManager.KEY_STATUS_CHANGED
  5. 广播状态改变时位置提供者的状态更新,

requestLocationUpdates

  1. requestLocationUpdates(provider,time,dis,listener)
  2. requestLocationUpdates(provider,time,dis,PendingIntent)
    05-android-广播定位
    使用广播和PendingIntent监听位置变化

05-android-广播定位

SUMMARY
1.静态广播与动态广播的区别
2.Intent与PendingIntent的区别
3.使用PendingIntent监听位置变化

本文地址:https://blog.csdn.net/weixin_44123412/article/details/107491948

相关标签: 基于android的定位