Don't pick a fixed value for the batch size; render until your time is exhausted and then wait for the next batch. Yes, this'll be slower overall, but you ensure that the app stays responsive regardless of device or CPU availability.
The only way I see that working out nicely is if you can know the height of the table in advance, which is generally not the case.