title: Service method is executed only once in onCreate method
body: <p>I have a <code>ForegroundService</code> class where I get Extras on my <code>onStartCommand()</code> method from another activity.. Only when I start my service for the first time, the <code>startScanning()</code> method is executed. The second time and after, my method isn't executed.. How can I fix that? Despite the fact that my collection of <code>IBeaconRegion</code> objects is updated, the second item of my collection is not included in my <code>startScanning</code> method.. I want my <code>startScanning</code> method (<code>onRegionEntered</code> &amp; <code>onRegionAbandoned</code>) to be executed continuously, including every new object added in the collection. <a href="https://i.stack.imgur.com/FzUJO.png" rel="nofollow noreferrer">First Region Object is included to onRegionEntered</a> . <a href="https://i.stack.imgur.com/QPUo8.png" rel="nofollow noreferrer">Second Region Object is <strong>not</strong> included to onRegionEntered</a>. Any solutions?</p>
  
  <pre><code>public class ForegroundScanService extends Service {
  
    public static final String TAG = ForegroundScanService.class.getSimpleName();
  
    public static final String ACTION_DEVICE_DISCOVERED = "DEVICE_DISCOVERED_ACTION";
    public static final String EXTRA_DEVICE = "DeviceExtra";
    public static final String EXTRA_DEVICES_COUNT = "DevicesCountExtra";
  
    private static final String STOP_SERVICE_ACTION = "STOP_SERVICE_ACTION";
  
    private static final String NOTIFICATION_CHANEL_NAME = "Kontakt SDK Samples";
    private static final String NOTIFICATION_CHANEL_ID = "scanning_service_channel_id";
  
    private ProximityManager proximityManager;
  
    private boolean isRunning; // Flag indicating if service is already running.
    private int devicesCount; // Total discovered devices count
    private Collection&lt;IBeaconRegion&gt; homeRegions = new ArrayList&lt;&gt;();
    private IBeaconRegion homeRegion;
  
    public static Intent createIntent(final Context context) {
      return new Intent(context, ForegroundScanService.class);
    }
  
    @Override
    public void onCreate() {
      super.onCreate();
      setupProximityManager();
  
      isRunning = false;
    }
  
    private void setupProximityManager() {
      // Create proximity manager instance
      proximityManager = ProximityManagerFactory.create(this);
  
      // Configure proximity manager basic options
      proximityManager.configuration()
          //Using ranging for continuous scanning or MONITORING for scanning with intervals
          .scanPeriod(ScanPeriod.RANGING)
          //Using BALANCED for best performance/battery ratio
          .scanMode(ScanMode.BALANCED);
  
      // Set up iBeacon listener
      proximityManager.setIBeaconListener(new SimpleIBeaconListener() {
      });
      //Setting up iBeacon and Eddystone spaces listeners
      proximityManager.setSpaceListener(createSpaceListener());
  
    }
  
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
  
      //GET REGION_NAME AND BEACON_MAJOR FROM NEW REGION ACTIVITY...
      String regionGet = intent.getStringExtra("region_name");
      int majorGet = intent.getIntExtra("beacon_major", 0);
      Toast.makeText(ForegroundScanService.this, "Name passed: " + regionGet + "Major passed: " + majorGet, Toast.LENGTH_SHORT).show();
      Log.d(TAG,"Region_Name: " + regionGet);
      Log.d(TAG,"Major: " + majorGet);
  
  
  
        if (regionGet != null &amp;&amp; majorGet != 0) {
            homeRegion = new BeaconRegion.Builder()
                    .identifier(regionGet)
                    .proximity(UUID.fromString("f7826da6-4fa2-4e98-8024-bc5b71e0893e"))
                    .major(majorGet)
                    .build();
            homeRegions.add(homeRegion);
  
            proximityManager.spaces()
                    .iBeaconRegions(homeRegions);
          Log.d(TAG, "Region ADDED" + "COLLECTION SIZE IS: " + homeRegions.size());
        }
  
  
  
      if (STOP_SERVICE_ACTION.equals(intent.getAction())) {
        stopSelf();
        return START_NOT_STICKY;
      }
  
      // Check if service is already active
      if (isRunning) {
        Toast.makeText(this, "Service is already running.", Toast.LENGTH_SHORT).show();
        return START_STICKY;
      }
  
      startInForeground();
      startScanning();
      isRunning = true;
  
  
  
      return START_STICKY;
    }
  
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
      return null;
    }
  
    @Override
    public void onDestroy() {
      if (proximityManager != null) {
        proximityManager.disconnect();
        proximityManager = null;
      }
      Toast.makeText(this, "Scanning service stopped.", Toast.LENGTH_SHORT).show();
      super.onDestroy();
    }
  
    private void startInForeground() {
      // Create notification intent
      final Intent notificationIntent = new Intent();
      final PendingIntent pendingIntent = PendingIntent.getActivity(
          this,
          0,
          notificationIntent,
          0
      );
  
      // Create stop intent with action
      final Intent intent = ForegroundScanService.createIntent(this);
      intent.setAction(STOP_SERVICE_ACTION);
      final PendingIntent stopIntent = PendingIntent.getService(
          this,
          0,
          intent,
          PendingIntent.FLAG_CANCEL_CURRENT
      );
  
      // Create notification channel
      if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O) {
        createNotificationChannel();
      }
  
      // Build notification
      final NotificationCompat.Action action = new NotificationCompat.Action(0, "Stop", stopIntent);
      final Notification notification = new NotificationCompat.Builder(this, NOTIFICATION_CHANEL_ID)
          .setContentTitle("Scan service is Active")
          .setContentText("Scanning for IBeacons Regions")
          .addAction(action)
          .setSmallIcon(android.R.drawable.ic_dialog_email)
          .setContentIntent(pendingIntent)
          .build();
  
      // Start foreground service
      startForeground(1, notification);
    }
  
    @RequiresApi(api = Build.VERSION_CODES.O)
    private void createNotificationChannel() {
      final NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      if (notificationManager == null) return;
  
      final NotificationChannel channel = new NotificationChannel(
          NOTIFICATION_CHANEL_ID,
          NOTIFICATION_CHANEL_NAME,
          NotificationManager.IMPORTANCE_DEFAULT
      );
      notificationManager.createNotificationChannel(channel);
    }
  
    private void startScanning() {
      proximityManager.connect(new OnServiceReadyListener() {
        @Override
        public void onServiceReady() {
          proximityManager.startScanning();
          devicesCount = 0;
          Toast.makeText(ForegroundScanService.this, "Scanning service started.", Toast.LENGTH_SHORT).show();
        }
      });
    }
  
    private SpaceListener createSpaceListener() {
      return new SpaceListener() {
        @Override
        public void onRegionEntered(IBeaconRegion region) {
          Log.i(TAG, "New Region entered: " + region.getIdentifier());
        }
  
        @Override
        public void onRegionAbandoned(IBeaconRegion region) {
          Log.e(TAG, "Region abandoned " + region.getIdentifier());
        }
  
        @Override
        public void onNamespaceEntered(IEddystoneNamespace namespace) {
          Log.i(TAG, "New Namespace entered: " + namespace.getIdentifier());
        }
  
        @Override
        public void onNamespaceAbandoned(IEddystoneNamespace namespace) {
          Log.i(TAG, "Namespace abandoned: " + namespace.getIdentifier());
        }
      };
    }
  
    private void onDeviceDiscovered(final RemoteBluetoothDevice device) {
      devicesCount++;
      //Send a broadcast with discovered device
      Intent intent = new Intent();
      intent.setAction(ACTION_DEVICE_DISCOVERED);
      intent.putExtra(EXTRA_DEVICE, device);
      intent.putExtra(EXTRA_DEVICES_COUNT, devicesCount);
      sendBroadcast(intent);
    }
  
  
  }
  </code></pre>