android中的BroadcastReceiver和ResultReceiver有什么区别?
Sla*_*ast 37
结果接收者:
Generic interface for receiving a callback result from someone.
Run Code Online (Sandbox Code Playgroud)
广播接收器:
Base class for code that will receive intents sent by sendBroadcast().
Run Code Online (Sandbox Code Playgroud)
编辑:
背景:所有网络操作/长时间运行操作都应该远离主线程.两种方法:
如果您需要在主线程之外执行工作,但只有在用户与您的应用程序交互时,您应该创建一个新线程而不是服务.例如,如果要播放某些音乐,但仅在活动运行时,可以创建异步线程.但是,如果您希望即使在用户退出应用程序(例如下载)之后该过程仍会继续,那么请使用服务
让我们说你选择2.现在
它会将数据发送回您的活动.
这里接收数据的第三步可以通过两种方式完成
1.)广播接收器:多个接收器可以接收您的数据.如果您想要跨应用程序发送数据/通知(比如您还要与fb和twitter进行交互,网络广播的多个接收器),每当您发送广播系统时,都会使用它.
2.)结果接收者:您的应用程序是数据的唯一接收者.它是您实现的接口,并通过putExtra将其传递给intentService.然后,IntentService将获取此对象并调用其receiver.send函数以将任何内容(在bundle中)发送到调用活动.如果您的所有通信都在您的应用程序内部,则结果接收器优先于广播接收器
编辑:我也应该提一下这个警告
警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).这意味着,如果您的服务要进行任何CPU密集型工作或阻止操作(例如MP3播放或网络),您应该在服务中创建一个新线程来完成这项工作.通过使用单独的线程,您将降低应用程序无响应(ANR)错误的风险,并且应用程序的主线程可以保持专用于用户与您的活动的交互.
Rid*_*lly 13
BroadcastReceiver是接收广播的接收器.这些是由某人发送的,意图是可能有许多接收者接收它们(如无线电广播).
另一方面,ResultReceiver旨在从某人接收回调结果.因此,这可以与对讲机进行比较,在那里你打电话给某人然后将从你所呼叫的那个人那里得到答案(结果).
归档时间: |
|
查看次数: |
10568 次 |
最近记录: |