3

我有一个在我的主要活动中启动的本地服务。该服务负责网络 I/O。它还与我的应用程序中的其他活动交互。直到现在,服务只是“提供”数据给活动(使用回调而不是意图。)

现在我需要将数据(自定义对象)从我的活动发送到服务。我了解使用 Intents 的一种方法。我知道可以通过覆盖onStartCommand()我的服务中的 Intent 来接收服务中的 Intent。但我不清楚每次我从发送活动中广播 Intent 时是否会调用 onStartCommand。服务也可以BroadcastReceiver吗?如果是 - 如何?

谢谢。

4

1 回答 1

5

您可以在服务中创建一个 BroadcastReceiver 对象并注册它以收听您想要的任何广播事件。是这样的:

BroadcastReceiver mScreenStateReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        //handle the broadcast event here
    }
};

@Override
public void onCreate() {
    super.onCreate();

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
    filter.addAction(Intent.ACTION_SCREEN_ON);
    registerReceiver(mScreenStateReceiver, filter);

}

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mScreenStateReceiver);
}

问候,

于 2010-08-02T09:28:12.167 回答