应用间进程发送广播

在应用中,我开了一个独立的service进程进行工作,用于拉取服务端的信息,得到想要的信息后发送广播,

在显示进程中进行监听广播,对发送的广播进行解析并作出相应的操作!

但是在很多机子上 都能成功,可是 在M9上就不行,打开logcat一看,需要加入下面的权限(屏幕保持唤醒 不锁屏  )<uses-permission android:name="android.permission.WAKE_LOCK" >
    </uses-permission>

 

加入权限后,果断可以发送广播了,至于为什么会这样,还不清楚。

 

 

屏幕锁屏后,使用Http进行网络请求失败!

Android 广播是一种机制,允许应用通过广播接收者共享数据和信息。它主要用于系统级的通知、服务通信以及各种事件触发。然而,Android 的广播系统设计得仅限于进程内部的操作,也就是说,通常情况下,一个应用内的广播无法直接跨越其他应用进程发送。 在 Android 中,广播是在应用的生命周期内进行传播的,并且它们只在广播接收者的进程内存范围内可见。这意味着如果想要从一个应用向另一个应用传递信息,你需要采取不同的策略,例如通过 IntentService、JobScheduler 等机制,或者利用 Android 的 Binder 机制进行跨进程通信。 尽管如此,在某些特定场景下,你可以接地实现“跨进程广播效果: 1. **使用 ContentProvider**:ContentProvider 允许应用的共享数据。虽然本质上仍然是在一个进程中访问,但实际上可以被认为实现了某种程度的数据跨应用传输,因为数据可以通过 ContentResolver 接口在任意应用中访问到。 2. **Intent Service 或 JobScheduler**:通过 Intent Service 或 JobScheduler 定时任务,可以在后台运行并接收来自其他应用广播意图。这种方式虽然不是真正意义上的“跨进程”,但能够实现消息在不同应用的传递。 3. **BroadcastReceiver 分发到外部应用**:如果你的应用是一个包含多个组件的应用,那么广播接收者可以分发给另一个同进程下的应用模块。这种方式实质上是应用内部的组件通信,但形式上接近了“跨进程”。 4. **使用 Binder 进行通信**:对于需要复杂交互或大量数据交换的情况,可以考虑使用 IPC (Inter-Process Communication) 技术,如 AIDL(Android Interface Definition Language)结合 Binder 实现跨应用的通信。 总的来说,尽管原生的 Android 广播机制限制了跨进程的直接广播能力,但通过上述方法和技巧,开发者仍然可以实现在 Android 应用的信息传递。这通常依赖于应用内部的结构、使用的框架和技术解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值