服务广播接收器记录超出预期

时间:2014-07-30 04:19:28

标签: android android-service android-broadcast

我的问题是我认为我的服务多次运行。该服务由一个调用一个启动和停止服务的方法的开关控制。我的服务中有一个广播监听器,收件人只要收到广播就会记录。首先打开,它会记录两次。关闭和打开后,它会记录四次。

public class Service1 extends Service implements DetectionListener {
    private static final String TAG = "ListenerService";
    private final broadcastReceiver1 receiver = new broadcastReceiver1();
    public HashMap<String, String> hashMapData;
    private ARSonicManager arSonicManager;

    public ListenerService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

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

        IntentFilter filter = new IntentFilter();
        filter.addAction("com.digify.almostrealsonic.broadcast_intent");

        registerReceiver(receiver, filter);
    }

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

    @Override
    public void onStart(Intent intent, int startId) {
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        if (null != intent) {
            try {
                hashMapData = (HashMap<String, String>) intent.getSerializableExtra("hashMapData");

                // Do something with hashMapData

            } catch (Exception e) {
                Log.i("onStartCommand", e.toString());
            }
        }
        return super.onStartCommand(intent, flags, startId);

    }

    @Override
    public void onMarkerDetected(String markerKey) {

        Intent intent = new Intent();
        intent.putExtra("hashMapData", hashMapData);
        intent.setAction("com.broadcastReceiver1_intent");
        sendBroadcast(intent);
    }

    public static class broadcastReceiver1 extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            String hashMapData = intent.getStringExtra("hashMapData");
            Log.i("receiver", "Got message: " + hashMapData);
        }
    }
}

0 个答案:

没有答案