Schedule update tasks directly on the UI handler

This commit is contained in:
Impyy 2016-10-06 21:49:26 +02:00
parent 036dd2b2cb
commit 56e4e79eb2

View file

@ -17,8 +17,6 @@ import com.amulyakhare.textdrawable.util.ColorGenerator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import me.impy.aegis.crypto.OTP; import me.impy.aegis.crypto.OTP;
import me.impy.aegis.helpers.ItemTouchHelperAdapter; import me.impy.aegis.helpers.ItemTouchHelperAdapter;
@ -26,14 +24,12 @@ import me.impy.aegis.helpers.ItemTouchHelperAdapter;
public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileAdapter.KeyProfileHolder> implements ItemTouchHelperAdapter { public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileAdapter.KeyProfileHolder> implements ItemTouchHelperAdapter {
private final List<KeyProfileHolder> lstHolders; private final List<KeyProfileHolder> lstHolders;
private ArrayList<KeyProfile> mKeyProfiles; private ArrayList<KeyProfile> mKeyProfiles;
private Timer timer;
private Handler uiHandler; private Handler uiHandler;
// Provide a suitable constructor (depends on the kind of dataset) // Provide a suitable constructor (depends on the kind of dataset)
public KeyProfileAdapter(ArrayList<KeyProfile> keyProfiles) { public KeyProfileAdapter(ArrayList<KeyProfile> keyProfiles) {
mKeyProfiles = keyProfiles; mKeyProfiles = keyProfiles;
lstHolders = new ArrayList<>(); lstHolders = new ArrayList<>();
timer = new Timer();
uiHandler = new Handler(); uiHandler = new Handler();
} }
@ -72,20 +68,18 @@ public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileAdapter.Ke
holder.updateCode(); holder.updateCode();
lstHolders.add(holder); lstHolders.add(holder);
timer.schedule(new TimerTask() { Runnable runnable = new Runnable() {
@Override @Override
public void run() { public void run() {
uiHandler.post(new Runnable() { // check if this key profile still exists
@Override if (lstHolders.contains(holder)) {
public void run() { holder.updateCode();
// check if this key profile still exists }
if (lstHolders.contains(holder)) {
holder.updateCode(); uiHandler.postDelayed(this, holder.keyProfile.Info.getPeriod() * 1000);
}
}
});
} }
}, holder.keyProfile.Info.getMillisTillNextRotation(), holder.keyProfile.Info.getPeriod() * 1000); };
uiHandler.postDelayed(runnable, holder.keyProfile.Info.getMillisTillNextRotation());
} }
// Return the size of your dataset (invoked by the layout manager) // Return the size of your dataset (invoked by the layout manager)