package net.bible.android.control; import net.bible.service.sword.SwordDocumentFacade; import java.util.Timer; import java.util.TimerTask; import javax.inject.Inject; /** * Support initialisation as i) do it now or ii) do this eventually */ @ApplicationScope public class WarmUp { private boolean isInitialised = false; private static final long INITIALISE_DELAY = 3000; private SwordDocumentFacade swordDocumentFacade; @Inject public WarmUp(SwordDocumentFacade swordDocumentFacade) { this.swordDocumentFacade = swordDocumentFacade; } /** * Allow Splash screen to be displayed if starting from scratch, otherwise, if returning to an Activity then ensure all initialisation occurs eventually. */ public void warmUpSwordEventually() { TimerTask timerTask = new TimerTask() { public void run() { warmUpSwordNow(); } }; Timer timer = new Timer(); timer.schedule(timerTask, INITIALISE_DELAY); } /** * Call any init routines that must be called at least once near the start of running the app e.g. start HistoryManager */ public synchronized void warmUpSwordNow() { if (!isInitialised) { // force Sword to initialise itself swordDocumentFacade.getBibles(); isInitialised = true; } } }