Android Studio "выйти из JobIntentService" / выйти из while-l oop с помощью SystemClock.sleep () - PullRequest
0 голосов
/ 20 июня 2020

Я использую следующий код как часть JobIntentService для управления обновлениями моих данных датчика:

@Override
protected void onHandleWork(@NonNull Intent intent) {
    Log.d(TAG, "onHandleWork");

    int index = intent.getIntExtra(RecyclerAdapter.EXTRA_INDEX, 0);
    SensorBox box = SensorBox.boxList.get(index);

    while (box.isExpanded()) {
        Log.d(TAG, "onHandleWork: planned update " + index);
        if (isStopped()) return;

        box.updateValues(index);
        SystemClock.sleep(waitTime * 1000);
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я сворачиваю детали - вид текущего датчика и развернуть следующий, обновление нового датчика обрабатывается только после завершения while-l oop первого. С waitTime , например 30s , это может занять некоторое время.

Я знаю, что JobIntentService не предназначен для отмены , но я не «На самом деле не нужно его отменять, просто закончите раньше.

Кто-нибудь знает, как это решить?

...