首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android基础总结(4)——广播接收器

这种广播效率比较高,同时也意味着无法被截断。...所以此时的广播接收器是有顺序的,优先级高的广播接收器可以先接受到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器无法收到广播消息了。...主要是使用了一个LocalBroadcastManager对象来对广播进行管理,并提供了发送和注册广播接收器的方法。本地广播无法通过静态注册的方法进行注册的。...5、在广播接收器中启动活动   在广播接收器中也可以启动一个活动,但是我们启动活动之前必须给intent加入FLAG_ACTIVITY_NEW_TASK标志,否则将无法启动。...下面的代码是创建一个广播接收器,在接收到广播后弹出一个警告对话框,并且设置该对话框不可取消,只能通过点击确定按钮来启动另一个活动页面。

1K100

Android-浅谈广播机制,实现强制下线功能

标准广播: 是一种完全异步执行的广播,在广播发出之后,所有的广播接收器都会在同一时间接收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。...优先级别高的广播接收器就可以先接收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器无法接收到广播消息了。...,我们通过一个List来暂存活动,然后提供了一个 addActivity() 方法用于向 List 中添加一个活动,提供了一个 removeActivity() 方法用于 List 中移除活动,最后提供了一个...由于广播接收器需要弹出一个对话框来阻塞用户的正常操作,但如果创建的是一个静态注册的广播接收器,是没有办法在 onReceive() 方法里弹出对话框的这样的UI操作的,而我没问显然也不可能在每个活动中都去注册一个动态的广播接收器...因为我们要始终保证只有处于栈顶的活动才能接受到这条强制下线广播,非栈顶的活动没必要去接受这条广播,所以写 onRemove 和 onPause() 方法里就可以很好的解决这个问题,当一个活动失去栈顶位置是就会自动取消广播接收器的注册

85430
您找到你想要的搜索结果了吗?
是的
没有找到

Android端SpyNote恶意软件技术层面深度剖析

除了隐藏安装之外,SpyNote还会将其Android设备的“最近使用的应用”页面中隐藏自己的活动,这一点可以通过在AndroidManifest.xml中将android:excludeFromRecents...此广播接收器是唯一的,因为系统上没有其他接收器能够处理SpyNote在即将关闭时生成的特定广播。 每当SpyNote服务即将关闭时,就会调用该服务的onDestroy方法。...onDestroy方法本身生成一个“RestartSensor”广播。这是特定于此应用程序的广播,系统上的任何其他应用程序都无法生成。...在接收到该广播后,广播处理程序(它是先前注册的唯一接收器)将重新启动服务: 下图是上述流程的代码实现部分,SpyNote首先在AndroidManifest.xml文件中声明了一个广播接收器。...广播接收器中的代码会检查目标用户是否接听了电话,一旦确认,就会开始录制音频: 图像捕捉/截图 SpyNote使用了MediaProjectionAPI来捕捉目标用户Android设备上的图像信息。

25710

速读原著-Android应用开发入门教程(Android应用程序的概念性描述)

5.1.1.应用程序的组成部分 一般情况下,Android 应用程序由以下 4 种组件构成: 活动(Activity); 广播接收器(BroadcastReceiver); 服务(Service); 内容提供者...每一个活动都被实现为一个独立的类,并且活动(Activity)基类中继承而来,活动类将会显示由视图(View)控件组成的用户接口,并对事件(Event)做出响应。...(2)广播接收器(BroadcastReceiver) 广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、数据网络可用通知或者到了晚上时进行通知。...广播接收器的生命周期 广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android 将调用这个方法,并传递给包含在这个消息中的 Intent 对象。...广播接收器只有在这个方法的执行过程中才处于活动状态,当 onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。

97410

安卓开发_深入理解广播机制

原因如下: (1)广播接收器的生命周期是非常短暂的,当广播接收器接收到广播开始创建,而执行完onReceive(context,intent)方法后就销毁 (2)默认情况下,广播接收器也是运行在UI线程中的...,同样无法接收到广播。...当然,即使系统给所有的广播开始都默认了FLAG值为:FLAG_EXCLUDE_STOPPED_PACKAGES (不发送给已经停止的应用程序的广播接收器) 导致已经退出的应用程序无法接收到系统广播          ...83 String UMS_DISCONNECTED_ACTION 广播:设备 USB 大容量存储模式退出。...后两个广播接收器无法再接受此广播了 4、粘性广播(查了下子类,粘性广播已被放弃,过时) 粘性广播的特点为: 会一直保留到广播事件结束,没有所谓的10秒限制 但是当接收此广播广播接收器的onReceive

1.4K70

Android四大组件详解

一个活动开始,代表 Activity 组件启动,活动 结束,代表一个 Activity 的生命周期结束。...其他应用可以通过ContentResolver类 该内容提供者中获取或存入数据。 只有需要在多个应用程序间共享数据是才需要 内容提供者。...对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。 Ordered broadcasts:有序广播。...A 得到广播后,可以往广播里存入数据,当广播传给 B 时,B可以广播中得到 A 存入的数据 总结: 当广播为有序广播时: 优先级高的先接收 同优先级的广播接收器,动态优先于静态 同优先级的同类广播接收器...当广播为普通广播时: 无视优先级,动态广播接收器优先于静态广播接收器 同优先级的同类广播接收器,静态:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。

3.4K20

广播的最佳实践——实现强制下线功能(Android_Broadcast)

)方法执行之后的处于准备交互的状态)都会注册一个接收器,接收广播信息,收到广播信息后执行onReceive方法,弹出对话框,随后销毁所有活动,重新启动LoginActivity,实现强制下线;在失去栈顶位置的时候...,则将接收器销毁;这样强制下线的功能就不会依附于任何的界面,不管是在程序的任何地方,只需要发出这样一条广播,就可以完成强制下线的操作了; 3.新建LoginActivity,作为登录界面,用户输入密码和账号...如类中的onCreate和onDestroy方法,所有本类派生出去的子类,在创建时会被加入ActivityCollector的数组activities里面,销毁时则会里面被移除; 其二,随后我们将重写本类的...onResume和onPause方法,所有本类派生出去的子类,在栈顶状态都会注册一个接收器,在失去栈顶位置的时候,则将接收器销毁; 新建LoginActivity: ?...修改BaseActivity,动态注册一个广播接收器:重写本类的onResume和onPause方法,所有本类派生出去的子类,在栈顶状态都会注册一个接收器,在失去栈顶位置的时候,则将接收器销毁; ?

96430

《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法

android:enabled="true"表示是否启用这个广播接收器;android:exported="true"表示这个广播接收器能否接收其他APP发出的广播。...广播接收器BootCompleteReceiverBroadcastReceiver类继承。重写BroadcastReceiver类的回调函数onReceive()。...使用有序广播,在某一个时刻只有一个接收器收到消息,它处理完消息以后,再把消息发送给下一个接收器。收听广播的顺序由接收器的优先级来确定。接收器可以截断消息,不传递,这样后面的接收器无法获得广播消息。...<application ​ …… ​ ​ 调用startService函数后,服务就开始运行。服务运行期间,启动它的活动可能被销毁,但是服务仍然可以存在,只要整个应用不退出运行。...(2) PendingIntent 与Intent 采用Intent无法实现通过点击通知来打开活动界面,因为使用Intent时系统会马上执行“意图”,并启动活动界面(执行action)。

7110

Android基础_1 四大基本组件介绍与生命周期

进行设置设为2147483647时优先级最 高),同级别接收的先后是随机的, 再到级别低的收到广播,高级别的或同级别先接收到广播的可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播...动态注册广播接收器还有一个特点,就是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。...而一个广播接收器仅在响应广播信息的时候激活。所以,没有必要去显式的关闭这些组件。...onCreate()开始直到调用onDestroy()结束 2.Activity的可视生命周期:调用onStart()到相应的调用onStop()。...图3.2service生命周期图 Service完整的生命周期:调用onCreate()开始直到调用onDestroy()结束 Service有两种使用方法: 1>以调用Context.startService

1.4K30

Android四大组件全面解析,夯实基础。

这种广播效率比较高,但同时也意味着它是无法被截断的。...1.2 有序广播(Ordered broadcasts) 是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。...所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播。...()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。...动态广播:先注册得优先于后注册的。 当广播为标准广播时: 无视优先级,动态广播优先于静态广播接收器 同优先级的同类广播接收器,静态广播:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。 6.

83230

android学习笔记----自定义广播和系统广播

这种广播效率会比较高,同时也是无法被截断或修改数据的。这种广播是全局性的,其他的应用程序都可以接受到。...所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先接收到广播消息,并且前面的广播接收器还可以截断或者修改正在传递的广播,这样后面的广播无法接受到广播消息或者接收到不真实的广播消息。...这是通过在呼叫时提供自己的广播收发器来实现的,它将被视为广播结束时的最终接收器-ITSBroadcastReceiver.onReceive(Context, Intent)方法将使用其他接收方收集的结果值调用...3.发送本地广播会比发送系统全局广播更高效。 系统广播广播接收器可以自由的对自己感兴趣的广播进行注册,这样当有相应的广播发出时,广播接收器就能够接收到该广播,并在内部处理相应的逻辑。...这是因为我们始终需要保证只有处于栈顶的活动才能接收到这条强制下线广播,非栈顶的活动不应该也没有必要去接收这条广播,所以写在onResume()和onPause()方法里就可以很好的解决这个问题,当一个活动失去栈顶位置时

1.5K20

Android Intent漏洞

这可用于创建一个代理组件(活动广播接收器或服务),该组件采用嵌入式意图并将其传递给危险方法,如startActivity()或 sendBroadcast()因此,可以强制应用启动无法直接其他应用启动的未导出组件...不安全的广播 如果应用使用隐式Intent来传递广播,则可以使用相同的操作注册广播接收器,并从其他应用拦截用户的广播。...例如,假设消息传递服务服务器请求新消息,并将其传递给负责在用户屏幕上显示这些消息的广播接收器: Intent intent = new Intent("com.victim.messenger.IN_APP_MESSAGE..."); intent.putExtra("from", id); intent.putExtra("text", text); sendBroadcast(intent); 由于隐式广播会传送到设备上注册的每个接收器...,因此可以跨所有应用注册以下广播接收器来拦截用户的广播: AndroidManifest.xml <intent-filter

49130

咦,Oreo怎么收不到广播了?

广播限制:除了有限的例外之外,应用无法使用清单注册(静态注册)的方式来接收隐式广播。 但对于这些隐式广播,可以通过运行时注册(动态注册)的方式注册。...Google显然很早就意识到这一点,并从Android 6.0 开始就逐步引入各种限制,比如运行时权限和Doze。...具体广播限制和对应赦免清单 如果应用注册了广播接收器,那么每次发送广播后,应用的广播接收器就会消耗资源,如RAM,CPU等。如果有很多应用对系统事件广播注册广播接收器,这....,就会很卡的嘛!...所以Android 7.0 (API 级别 24)开始,就对广播做了一些限制: API24及以上应用,静态注册的广播接收器无法监听网络变化:android.net.conn.CONNECTIVITY_CHANGE...在Android7.0设备上,App无法发送或者接收ACTION_NEW_PICTURE和ACTION_NEW_VIDEO广播

1.9K40

Android程序员问答题

Android四大组件有Activity活动,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。...生命周期:在整个的生命周期,onCreate(Bundle)开始到onDestroy()结束。onStart()开始到onStop()结束。onResume()开始到onPause(()结束。...5.广播接收器 BroadcastReceiver BroadCastReceiver是Android四大组件之一,主要用于接收系统或者app发送的广播事件。广播分两种:有序广播和无序广播。...无序广播:完全异步,逻辑上可以被任何广播接收者接收到。有序广播:按照被接收者的优先顺序,在被接受者中传播。...其最重要的用途是开展活动,在活动中它可以被认为是活动之间的胶水。它基本上是一个被动的数据结构,对被执行的动作进行抽象描述。

64120

安卓应用安全指南 4.2.2 创建使用广播接收器 规则书

4.2.2.1 仅在应用中使用的广播接收器必须设置为私有(必需) 仅在应用中使用的广播接收器应该设置为私有,以避免意外地其他应用接收任何广播。 它将防止应用功能滥用或异常行为。...由于公共广播接收器从未指定的大量应用接收意图,它可能会收到恶意软件的攻击意图。 私有广播接收器将永远不会直接其他应用接收任何意图,但公共组件其他应用接收的意图数据,可能会转发到私有广播接收器。...如上所述,当广播接收器返回结果信息时,需要注意目标应用泄漏的结果信息。...另一方面,粘性广播(以下粘性广播包括粘性有序广播)即使由可用的广播接收器接收也不会系统中消失,并且能够由registerReceiver()接收。...具有指定receiverPermission参数的广播无法发送。 出于这个原因,通过粘性广播发送的信息,可以被多个未指定的应用访问 - 包括恶意软件 - 因此敏感信息禁止以这种方式发送。

80430

【Android】Broadcasts详解

举例来说,当一些系统事件(如开机,设备开始充电等)发生,Android系统会发送广播。应用程序也可以发送自定义的广播,比如当某个应用关注的事件(如数据更新等)发生后可以发送广播提醒它。...然而,一旦onReceive()返回,广播接收器就不再处于激活状态,它的宿主进程也就跟其它的普通进程具有相同的优先级。...如果那个进程只拥有一个在应用清单中定义的接收器,那么当onReceive()返回后,系统会把它当作一个低优先级的进程,当其它优先级更高的进程需要更多内存的时候,它就可能被杀掉。...鉴于这个原因,你不应该在一个广播接收器中启动一个长时间在后台运行的线程。当onReceive()返回后,系统可能会杀掉进程来回收内存,这会结束所有运行在这个进程中的线程。...广播接收器无法捕捉到用来启动Activity的intent;同样地,当你广播一个intent,你也无法启动一个Activity。

75220

Android-系统架构

应用层 所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等 程序,或者是你 Google Play 上下载的小游戏,当然还包括你自己开发的程序。...四大组件 Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。...其中活动是所有 Android 应用程序的门面, 凡是在应用中你看得到的东西,都是放在活动中的。...广播接收器可以允许你的应用接收来自各处的广播消息,比如电话、短信等,当然你的 应用同样也可以向外发出广播消息。...通过灵活地使用这些传感器,你可以做出很多在 PC 上根本无法 实现的应用。

38130
领券