0

BroadcastReceiver(NetworkListener)があります。

public class NetworkReceiver extends BroadcastReceiver {
Context context;
public static NetworkReceiver instance = new NetworkReceiver();
public static InnerObservable observable = instance. new InnerObservable();
...

このレシーバーは通知を送信します。

@Override
public void onReceive(Context ctx, Intent intent) {

    Log.d("tag", "onReceive");

    NotificationManager notif = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(android.R.drawable.ic_dialog_alert,"bla-bla-bla",System.currentTimeMillis());

マニフェスト ファイル:

 <receiver 
        android:name="com.mypckg.network.NetworkReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver> 

それは正常に動作します。ただし、電話の再起動後も引き続き機能します。それを避ける方法は?

4

2 に答える 2

1

アプリケーションの起動時にブロードキャストレシーバーの動作を開始する場合は、メインアクティビティからプログラムで登録/登録解除する必要があります。

private BroadcastReceiver networkReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    networkReceiver = new NetworkReceiver();
    registerReceiver(networkReceiver, ConnectivityManager.CONNECTIVITY_ACTION);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(networkReceiver)
}
于 2012-11-09T09:42:31.453 に答える