/** * Méthode gérant la création de l'activité (ce qui peut correspondre à une vraie création ou à * une réinstanciation) * * @param activity l'activité en question * @param savedInstanceState l'état conservé */ public void handleActivityCreation(GeekIncRssListActivity activity, Bundle savedInstanceState) { // Réattachement d'une tâche éventuelle ProgressTask task = listData.getTask(); if (task == null) { // S'il s'agit du premier lancement, on lance tout le système // sinon, l'utilisateur devra faire "refresh" if (savedInstanceState == null) { launchReload(activity); } else { onRestoreInstanceState(savedInstanceState); updateView(activity); } } else { // Réattachement task.attach(activity); int oldProgress = 0; // On gère le cas d'un changement d'activité / rotation d'écran // avant la création du dialogue ProgressDialog dialog = listData.getDialog(); if (dialog != null) { oldProgress = dialog.getProgress(); } // Si le dialogue doit encore être affiché, on le recrée if (oldProgress < 100) { instantiateAndShowProgressDialog(activity, oldProgress); } updateProgress(activity, task.getProgress(), task.getPodcastElements(), task.getFluxRSS()); } }
/** Lance un reload du flux RSS si pas déjà en cours */ public void launchReloadIfNeeded(GeekIncRssListActivity activity) { if ((listData.getTask() == null) || ((listData.getDialog() != null) && (listData.getDialog().getProgress() >= 100))) { launchReload(activity); } }
/** Détache les tâches en cours */ public void detachTask() { if (listData.getTask() != null) { listData.getTask().detach(); } }