首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:如何从C2DMBaseReceiver调用非静态函数?

Android:如何从C2DMBaseReceiver调用非静态函数?
EN

Stack Overflow用户
提问于 2011-06-15 11:54:35
回答 2查看 186关注 0票数 2

我正在使用android-c2dm,我的设备成功地从它接收消息。我想调用一个非静态函数(在已经存在的活动中)来处理该消息,但是从C2DMBaseReceiver调用它是非法的。如何将此信息传回活动?

编辑:如果我调用一个静态函数来分配变量(或设置共享首选项),然后调用一个处理程序,该处理程序将使用这些变量来完成需要做的事情,该怎么办?那是不是很糟糕的风格?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-15 12:26:56

您可以做的是以某种方式将消息详细信息放入意图中(最原始的方法是将消息序列化为字符串,并将其作为意图额外添加),然后使用startActivity将该意图发送到活动。该活动可以检查额外的消息,知道它是一条消息,提取并反序列化该消息,然后去镇上。

如果您希望确保目标活动的现有实例接收消息,则可能需要设置适当的启动模式或意图标志。

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 04:43:09

您可以在onMessage方法中从Intent获取消息,然后在用户单击Notification后显示Notification和startActivity。您可以使用意图标志将后台活动带到前台。因此,如果activity没有启动-它将被启动,如果activity在后台-它将显示在前台,如果它在前台-那么我们只需要更改TextView文本。您也可以在不显示通知的情况下使用startActivity。您还可以使用onNewIntent( intent )活动方法来更改文本。您可以使用此intent和FLAG_ACTIVITY_SINGLE_TOP标志将来自onMessage中的谷歌Intent的消息放入新的intent和startActivity中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6352829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档