android - 从服务更新 UI

标签 android service google-cloud-messaging

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

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

最佳答案

我建议在这里使用广播接收器。所以 IntentService 将广播事件,所有 Activity 或其他东西都可以注册它。

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

更新:

要在 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);
} 

在这里你可以检查如何在你的 Activity 中注册接收器,这很简单:how to use LocalBroadcastManager?

祝你好运

关于android - 从服务更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254154/

相关文章:

python - 将 python 脚本(使用 GUI wxpython)作为服务运行

python - 谷歌云消息 HTTP 错误 400 : Bad Request

java - GCM :Device can send message but not registered

android - 移除 Actionbar 和 Tab 之间的阴影

mobile - Bluemix 的所有服务都可以在移动应用程序中使用吗?

php - Zend Framework 2 - 如何对自己的 session 服务进行单元测试?

java - GCM如何定位用户电话

android - 处理互联网连接 : Special Case

android - onTouchEvent()中如何区分移动和点击?

android - 按下主页按钮时如何完成() Activity