Umair A.
Umair A.

Reputation: 6873

Android EditText Calculate Pause

I have an android activity where there is an EditText and as user types in, it calls the service on every key typed. I believe this is not efficient because more than required calls are being made. So the solution is to have some sort of pause checking there.

if (PauseOfThreeSeconds) {
   // call the service here
}

How can I sense a pause and then only call the service?

Upvotes: 0

Views: 148

Answers (2)

Yashwanth Kumar
Yashwanth Kumar

Reputation: 29121

Start a handler with post delayed for 3 seconds every time the key stroke is made. When ever you get a key store, cancel the runnable that is already in the queue and start a new runnable like i mentioned above.

Upvotes: 1

slayton
slayton

Reputation: 20319

You should schedule an alarm to start the service on each button press, but also to cancel any previously scheduled alarms so they don't go off as well:

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

long alarmWaitTime = 3000;

onButtonClicked(View v){

    Intent i = new Intent(AndroidAlarmService.this, MyAlarmService.class);
    PendingIntent pi = PendingIntent.getService(AndroidAlarmService.this, 0, i, 0);

    // Cancel any previously set alarms
    alarmManager.cancel(pi);

    // set a new alarm
    alarmManager.set(AlarmManager.RTC, System.getTimeInMillis() + alarmWaitTime , pi);
}

Upvotes: 0

Related Questions