对于GcmListenerService是onMessageReceived后台吗?

时间:2016-03-15 19:40:48

标签: android google-cloud-messaging gcmlistenerservice

当我扩展GcmListenerService时,onMessageReceived是在后台进程中运行还是在UI线程上运行?我需要知道是否可以在方法体内进行网络调用而不使用asyncTask等。

我查看了源代码,确定它是一个没有处理程序的vanilla服务。但是有一些关于THREAD_POOL_EXECUTOR和一些显然混淆的东西的代码。

3 个答案:

答案 0 :(得分:1)

  

当我延长GcmListenerService时,onMessageReceived正在运行   后台进程还是在UI线程上?我需要知道我是否可以   在不使用asyncTask的情况下在方法体内进行网络调用   或者这样。

是的,您可以在onMessageReceived()方法内进行网络调用,因为它在后台进程中运行。例如,您可以使用大图像通知样式在通知中显示此图像之前下载图像。

答案 1 :(得分:0)

简单检查以确定当前线程是否是主UI线程

boolean isMain = Looper.getMainLooper().getThread() == Thread.currentThread();
放置在onMessageReceived方法内的

表示它正在后台进程answer中运行到类似问题)。

答案 2 :(得分:-1)

服务未在Ui /主线程上运行。

即使应用程序关闭,服务也可以(在后台)运行,这样您就可以获得推送通知,听取接收推送时调用的意图并使用它来唤醒您的应用。