@IvanOne

Почему зацикливаются запросы?

Привет всем помогите пожалуйста разобраться с одной вещью, в приложении используется retrofit2, с его помощью я делаю head запрос на сервер
ShoppingService service = ServiceGenerator.createServiceToken(ShoppingService.class, token);
Call is_update_request = service_gen.is_update();
Headers headers = is_update_request.execute().headers();

Это вызов
вот сам сервис
@HEAD("shoplists_update/")
    Call<Void> is_update();

То есть там просто проверяется заголовок определенный
Все это дело запускается через IntentService
@Override
    protected void onHandleIntent(Intent intent) {
        String token = getToken();
        ShoppingService service = ServiceGenerator.createServiceToken(ShoppingService.class, token);
        Log.d(LOG_TAG, "onHandleIntent start ");
        try {
            Log.v(LOG_TAG, "start request");
            if(is_sync(service)){
                Log.v(LOG_TAG, "start sync");
                sync(service);
                Log.v(LOG_TAG, "end sync");
            }
        } catch (IOException | ParseException e) {
            e.printStackTrace();
        }
        Log.d(LOG_TAG, "onHandleIntent end ");
    }

is_sync как раз делает запросы
И все это дело запускается по расписанию в Activity
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shopping_list);
        AlarmManager mgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        Intent notificationIntent = new Intent(this, SyncService.class);
        PendingIntent pendingIntent=PendingIntent.getService(this, 0, notificationIntent, 0);
        mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis(), 120, pendingIntent);
    }

Вопрос в том что при каждом запуске IntentService, число запросов увеличивается на один, т е при первом запуске один запрос, при втором два и т.д. Почему так происходит?
И еще вопрос запуск IntentService сделан в базовом activity, т.е все остальные activity наследуются от него, насколько корректно это? И если нет то как правильно вызывать IntentService по расписанию.

Просьба не кидать камнями, только начинаю писать на android.
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Насколько я понимаю, ваша проблема в том, что вы ставите "будильник" при каждом вызове onCreate(). Нужно где-то (например, Preferences) запоминать, что вы уже ставили.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы