Convert Task and TaskRunner

pull/716/head
Quentin Hibon 5 years ago
parent 8131d37d8e
commit 7d361b2203

@ -40,8 +40,8 @@ class TaskProgressBar(
isIndeterminate = true
}
override fun onTaskStarted(task: Task?) = update()
override fun onTaskFinished(task: Task?) = update()
override fun onTaskStarted(task: Task) = update()
override fun onTaskFinished(task: Task) = update()
override fun onAttachedToWindow() {
super.onAttachedToWindow()

@ -23,6 +23,8 @@ import android.os.*;
import org.isoron.uhabits.core.*;
import org.isoron.uhabits.core.tasks.*;
import org.isoron.uhabits.core.tasks.Task;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@ -53,18 +55,19 @@ public class AndroidTaskRunner implements TaskRunner
}
@Override
public void addListener(Listener listener)
public void addListener(@NotNull Listener listener)
{
listeners.add(listener);
}
@Override
public void execute(Task task)
public void execute(@NotNull Task task)
{
task.onAttached(this);
new CustomAsyncTask(task).execute();
}
@Override
public int getActiveTaskCount()
{
@ -72,7 +75,7 @@ public class AndroidTaskRunner implements TaskRunner
}
@Override
public void publishProgress(Task task, int progress)
public void publishProgress(@NotNull Task task, int progress)
{
CustomAsyncTask asyncTask = taskToAsyncTask.get(task);
if (asyncTask == null) return;
@ -80,11 +83,12 @@ public class AndroidTaskRunner implements TaskRunner
}
@Override
public void removeListener(Listener listener)
public void removeListener(@NotNull Listener listener)
{
listeners.remove(listener);
}
private class CustomAsyncTask extends AsyncTask<Void, Integer, Void>
{
private final Task task;

@ -21,6 +21,9 @@ package org.isoron.uhabits.core.tasks
import java.util.LinkedList
class SingleThreadTaskRunner : TaskRunner {
override val activeTaskCount: Int
get() = 0
private val listeners: MutableList<TaskRunner.Listener> = LinkedList()
override fun addListener(listener: TaskRunner.Listener) {
listeners.add(listener)
@ -37,10 +40,6 @@ class SingleThreadTaskRunner : TaskRunner {
for (l in listeners) l.onTaskFinished(task)
}
override fun getActiveTaskCount(): Int {
return 0
}
override fun publishProgress(task: Task, progress: Int) {
task.onProgressUpdate(progress)
}

@ -16,27 +16,16 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.core.tasks;
import androidx.annotation.*;
public interface Task
{
default void cancel() {}
default boolean isCanceled()
{
return false;
}
void doInBackground();
default void onAttached(@NonNull TaskRunner runner) {}
default void onPostExecute() {}
default void onPreExecute() {}
default void onProgressUpdate(int value) {}
package org.isoron.uhabits.core.tasks
fun interface Task {
fun cancel() {}
val isCanceled: Boolean
get() = false
fun doInBackground()
fun onAttached(runner: TaskRunner) {}
fun onPostExecute() {}
fun onPreExecute() {}
fun onProgressUpdate(value: Int) {}
}

@ -16,25 +16,17 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.core.tasks;
public interface TaskRunner
{
void addListener(Listener listener);
void removeListener(Listener listener);
void execute(Task task);
void publishProgress(Task task, int progress);
int getActiveTaskCount();
interface Listener
{
void onTaskStarted(Task task);
void onTaskFinished(Task task);
package org.isoron.uhabits.core.tasks
interface TaskRunner {
fun addListener(listener: Listener)
fun removeListener(listener: Listener)
fun execute(task: Task)
fun publishProgress(task: Task, progress: Int)
val activeTaskCount: Int
interface Listener {
fun onTaskStarted(task: Task)
fun onTaskFinished(task: Task)
}
}

@ -136,8 +136,9 @@ class HabitCardListCache @Inject constructor(
@Synchronized
fun refreshAllHabits() {
if (currentFetchTask != null) currentFetchTask!!.cancel()
currentFetchTask = RefreshTask()
taskRunner.execute(currentFetchTask)
val task = RefreshTask()
currentFetchTask = task
taskRunner.execute(task)
}
@Synchronized

Loading…
Cancel
Save