0

アクティビティがアクティブな場合にのみ受信されるように見える接続変更のレシーバーを持つバックグラウンド サービスがあります。

@Override
public void onCreate() {

    mContext = this;

    IntentFilter connectivityChangeFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
    registerReceiver(receiver, connectivityChangeFilter);

次のようにマニフェストに設定しました。

<service
     android:name="com.myservice.TimeService"
     android:label="com.myservice.TimeService" >
     <intent-filter>
          <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
     </intent-filter>
</service>

マニフェストにレシーバーとして登録されている、正常に動作するブート完了用の別のレシーバーがあります(これとは異なります)。

インテント フィルタだけではブロードキャストを実行できませんか? レシーバーがサービスのメソッドを呼び出すようにしたいので、サービスのメソッドにアクセスできる必要がありますが、レシーバーがサービスにバインドできるとは思いません。

-- 更新 一言で言えば、サービスと対話するレシーバーを静的に宣言できるかどうかを知りたいです。動的宣言は、アプリがアクティブな場合にのみ機能します。

4

1 に答える 1

0

Android スティッキー インテントを使用する

通常のブロードキャスト インテントは、システムによって送信および処理された後は使用できなくなります。sendStickyBroadcast(Intent) メソッドを使用する場合、Intent はスティッキーです。つまり、送信している Intent は、ブロードキャストが完了した後も残ります。

ここにコード例

于 2012-12-12T11:23:06.807 に答える