Вероятнее всего проблема заключается в том, что BroadcastReceiver UnlockMonitoringReceiver зарегистрирован несколько раз, что приводит к вызову метода unlocktoserver() несколько раз.
Попробуйте проверить, не зарегистрирован ли BroadcastReceiver UnlockMonitoringReceiver в вашем коде более одного раза. Если он зарегистрирован несколько раз, то вам нужно удалить все лишние регистрации BroadcastReceiver'ов.
Также возможно, что ваша система запускает несколько копий сервиса UnlockMonitoringService, поэтому вам может потребоваться проверить это, например, добавив логирование в метод onStartCommand() для отслеживания количества вызовов.
Пример кода, который может помочь выявить причину дублирования запуска сервиса:
public class MyService extends Service {
private int counter = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("MyService", "onStartCommand() called. counter = " + counter);
// Увеличиваем значение счетчика
counter++;
// Возвращаем значение START_STICKY
return Service.START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("MyService", "onDestroy() called.");
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Этот сервис просто увеличивает значение счетчика каждый раз, когда вызывается метод onStartCommand(). Вы можете использовать этот код в своем проекте, чтобы отследить количество вызовов метода onStartCommand() и убедиться, что сервис не запускается несколько раз.