从服务更新 UI

Posted

技术标签:

【中文标题】从服务更新 UI【英文标题】:Update UI from servvice 【发布时间】:2012-09-03 21:22:42 【问题描述】:

我已遵循此代码:How to get RegistrationID using GCM in android

但我想用收到的消息更新MainActivityTextView。 请帮助我为什么我不知道如何

【问题讨论】:

【参考方案1】:

我建议在这里使用广播接收器。所以IntentService会广播这个事件,所有的活动或者别的什么都可以注册。

为了避免 BroadcastReceivers 本身的过度杀伤(因为它们旨在用于进程间通信并且可能是过度杀伤和安全漏洞) - 我建议使用 LocalBroadcastManager - http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html 。它是严格本地广播的助手,更容易处理它们并提供更高的性能和安全性。

更新:

要在 GCM IntentService 中使用 LocalBroadcastReceiver,您应该执行以下操作:

@Override
protected void onMessage(Context context, Intent intent) 
    Intent bIntent = new Intent("custom-event-name");
    // You can also include some extra data.
    bIntent .putExtra("message", intent); //or get some info from Gcm intent and put it into this one.
    LocalBroadcastManager.getInstance(context).sendBroadcast(bIntent);
 

在这里你可以检查如何在你的活动中注册接收器,这很容易:how to use LocalBroadcastManager?

祝你好运

【讨论】:

感谢 alexn,我是 android 新手,请将修改应用到代码并展示给我......对不起我的英语。 其实连代码都不需要贴了——这里有详细的题目描述:***.com/questions/8802157/…希望对你有帮助 但我不知道如何应用代码为什么收到扩展 GCMBaseIntentService....请帮帮我... 我已经修改了答案,请检查。 片刻...但是我应该把编辑文本视图的代码放在哪里?

以上是关于从服务更新 UI的主要内容,如果未能解决你的问题,请参考以下文章

每秒异步更新 UI,无需从服务器刷新页面

从服务更新 UI 比意图更有效的方法?

如何从 IntentService 收集信息并更新 Android UI

UWP 从 Task 更新 UI

UI 元素仅在焦点从原始按钮/输入移开时更新

node.js 从脚本调用函数来更新 UI