Is there any reason to continue using IntentService for handling GCM messages?

瘦欲@ 提交于 2019-12-29 07:44:51

问题


As you know, recently Google changed their GCM documentation, and they claim that an IntentService is no longer required for handling arriving GCM messages. All the handling can be done in the BroadcastReceiver.

When trying to figure out if there is any good reason to continue using the IntentService, I came across this quote:

A Service (typically an IntentService) to which the WakefulBroadcastReceiver passes off the work of handling the GCM message, while ensuring that the device does not go back to sleep in the process. Including an IntentService is optional—you could choose to process your messages in a regular BroadcastReceiver instead, but realistically, most apps will use a IntentService.

Why would most apps use an IntentService? Are there any scenarios in which handling the GCM message directly in the BroadcastReceiver won't work?


回答1:


Why would most apps use an IntentService?

Because most likely whatever you are doing in response to the message will take more than 1-2ms, which means that you want to get that work off the main application thread. A common pattern for doing that in response to a broadcast is to delegate the work to an IntentService.

So, if your work in response to the GCM message involves:

  • disk I/O
  • further network I/O (e.g., retrieving additional data from your Web service)
  • substantial calculations (e.g., image processing)

you will likely want to use an IntentService to perform that work.



来源:https://stackoverflow.com/questions/18413602/is-there-any-reason-to-continue-using-intentservice-for-handling-gcm-messages

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!