                 if resultExists {
                     if isUploaded {
                         activity.stateMachine.enter(UploadCompleteState.self)
-                        self.tableView.reloadRows(at: [IndexPath(row: i, section: 0)], with: .none)
+                        rowsToReload.append(IndexPath(row: i, section: 0))
                     } else {
                         uploadResultsOf(activity: activity, forRow: i)
                     }

    }
    
    func updateAllActivities() {
        for (i, activity) in service.activities.enumerated() {
            switch activity.type {
            case .search:

        var indexPathToReload: [IndexPath] = []
        
        for (i, activity) in service.activities.enumerated() {
            if activity.type == .search {
                if activity.timeRemaining > 0 && activity.daysRemaining <= 0 {
                    indexPathToReload.append(IndexPath(row: i, section: 0))
                } else if activity.timeRemaining < 0 {
                    // Reset next row if countdown reaches 0 while other task is not completed
                    let resultExists = service.resultService.fileService.resultFileExists(resultNumber: activity.number)
                    let nextOrSecondActivityNumber = service.lastActivityNumber == nil ? 1 : service.lastActivityNumber! + 2
                    if activity.number == nextOrSecondActivityNumber {
                        let oneDayBack = Calendar.current.date(byAdding: .hour, value: -18, to: Date(), wrappingComponents: false)!
                        service.updateActivitiesWithLastActivityDate(oneDayBack, forActivityNumber: service.lastActivityNumber)
                        updateAllActivities()
                    } else if let number = service.lastActivityNumber, activity.number == number, resultExists == false {
                        // Always update row of current activity if
                        indexPathToReload.append(IndexPath(row: i, section: 0))
                    }
                }
            }
        }
