3

私は私の主な活動で開始されたローカルサービスを持っています。このサービスは、ネットワークI/Oを担当します。また、アプリケーション内の他のアクティビティとも相互作用します。これまで、サービスはアクティビティにデータを「提供」するだけでした(インテントではなくコールバックを使用)。

次に、アクティビティからサービスにデータ(カスタムオブジェクト)を送信する必要があります。インテントを使用してそれを行う1つの方法を理解しています。サービスでインテントをオーバーライドすることで、サービスでインテントを受け取ることができることを知っていonStartCommand()ます。しかし、送信アクティビティからインテントをブロードキャストするたびに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 に答える