【问题标题】:What is the simplest way to send message from local service to activity将消息从本地服务发送到活动的最简单方法是什么
【发布时间】:2011-03-28 17:31:36
【问题描述】:

我有一个正在监听电话的服务。当手机进入空闲状态时,我想向我的活动发送一条消息。看起来我有两个选择来完成这个。 BroadcastReceiver 并绑定到服务。 BroadcastReceiver 看起来是一种更简单的机制,所以我尝试了以下测试。

在我的活动中:

@Override
protected void onStart() {
    super.onStart();
    IntentFilter filter = new IntentFilter("MyAction");
    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d(TAG, "Yay.......");
            abortBroadcast();
        }
    }, filter);
}

在我正在监听事件的服务中,当我检测到我想要的事件时:

    Intent localIntent = new Intent(_context, MainActivity.class);
    intent.setAction("MyAction");
    _context.sendOrderedBroadcast(localIntent, null);

在我的测试中,在我观察到使用调试器发送的广播之后,永远不会调用 onReceive() 方法。我错过了什么?此外,BroadcastReceiver 是本地服务与 Activity 通信的最简单方式吗?

【问题讨论】:

  • 您的清单是否有合适的

标签: android


【解决方案1】:

我认为我在最初的测试用例中遇到了一些问题。 1.当我在我的服务中创建我的意图时,它应该以“动作”作为参数。 2. 我认为我需要将意图过滤器添加到我的清单中。

我现在的工作示例是:

活动:

        startService(intent);

        IntentFilter filter = new IntentFilter(PhoneListeningService.PHONE_IDLE);
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d(TAG, "Yay.......");
            }
        }, filter);

清单:

    <activity android:name=".MainActivity" android:screenOrientation="portrait" >
       <intent-filter>
            <action android:name="com.ncc.PhoneListeningService.action.PHONE_IDLE" />
        </intent-filter>
    </activity>

服务:

为命名的“动作”声明公共常量并广播一个意图。

public static final String PHONE_IDLE = "com.ncc.PhoneListeningService.action.PHONE_IDLE";

...我的听众检测到手机空闲:

            Intent intent = new Intent(PHONE_IDLE);
            sendBroadcast(intent);

【讨论】:

  • 感谢您提供简明扼要的示例! @aaaaaaa:是的,它有效。
  • ...除了您需要在活动停止时取消注册Receiver()...但这是一个小问题。
猜你喜欢
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2012-09-17
  • 2011-08-14
相关资源
最近更新 更多