Skip to content

Commit

Permalink
fix: dont start a lookup on each key change, throttle a bit. Nicer an…
Browse files Browse the repository at this point in the history
…d prevent crashes on older devices
  • Loading branch information
farfromrefug committed Jan 10, 2025
1 parent d603674 commit d293e45
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions src/itkach/aard2/lookup/LookupFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;

import java.util.Timer;
import java.util.TimerTask;

import itkach.aard2.Application;
import itkach.aard2.BaseListFragment;
import itkach.aard2.MainActivity;
Expand All @@ -29,6 +32,7 @@
public class LookupFragment extends BaseListFragment implements LookupListener, SearchView.OnQueryTextListener {
private final static String TAG = LookupFragment.class.getSimpleName();

private Timer timer;
private SearchView searchView;
private LookupResultAdapter listAdapter;
private LookupViewModel viewModel;
Expand Down Expand Up @@ -95,6 +99,7 @@ public void onPause() {

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
timer = new Timer();
inflater.inflate(R.menu.lookup, menu);
MenuItem lookupMenu = menu.findItem(R.id.action_lookup);
View filterActionView = lookupMenu.getActionView();
Expand Down Expand Up @@ -173,10 +178,27 @@ public boolean onQueryTextSubmit(String query) {
return false;
}

TimerTask scheduledLookup = null;
@Override
public boolean onQueryTextChange(String newText) {
if (viewModel != null) {
viewModel.lookup(newText);
// Log.d(TAG, "new query text: " + newText);
TimerTask doLookup = new TimerTask() {
@Override
public void run() {
final String query = searchView.getQuery().toString();
if (viewModel != null) {
viewModel.lookup(query);
}
scheduledLookup = null;
}
};
final String query = searchView.getQuery().toString();
if (!AppPrefs.getLastQuery().equals(query)) {
if (scheduledLookup != null) {
scheduledLookup.cancel();
}
scheduledLookup = doLookup;
timer.schedule(doLookup, 500);
}
return true;
}
Expand Down

0 comments on commit d293e45

Please sign in to comment.