limit ui refresh rate

This commit is contained in:
iNPUTmice 2015-02-17 14:18:35 +01:00
parent 67d5ee6b71
commit a8ec36cda8
8 changed files with 81 additions and 93 deletions

View File

@ -22,6 +22,7 @@ public final class Config {
public static final int MAX_NUM_PAGES = 3; public static final int MAX_NUM_PAGES = 3;
public static final int PROGRESS_UI_UPDATE_INTERVAL = 750; public static final int PROGRESS_UI_UPDATE_INTERVAL = 750;
public static final int REFRESH_UI_INTERVAL = 500;
public static final boolean NO_PROXY_LOOKUP = false; //useful to debug ibb public static final boolean NO_PROXY_LOOKUP = false; //useful to debug ibb

View File

@ -144,25 +144,18 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
@Override @Override
public void onConversationUpdate() { public void onConversationUpdate() {
runOnUiThread(new Runnable() { refreshUi();
@Override
public void run() {
updateView();
}
});
} }
@Override @Override
public void onMucRosterUpdate() { public void onMucRosterUpdate() {
runOnUiThread(new Runnable() { refreshUi();
}
@Override @Override
public void run() { protected void refreshUiReal() {
updateView(); updateView();
} }
});
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View File

@ -139,27 +139,19 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
@Override @Override
public void onRosterUpdate() { public void onRosterUpdate() {
runOnUiThread(new Runnable() { refreshUi();
@Override
public void run() {
invalidateOptionsMenu();
populateView();
}
});
} }
@Override @Override
public void onAccountUpdate() { public void onAccountUpdate() {
runOnUiThread(new Runnable() { refreshUi();
}
@Override @Override
public void run() { protected void refreshUiReal() {
invalidateOptionsMenu(); invalidateOptionsMenu();
populateView(); populateView();
} }
});
}
@Override @Override
protected String getShareableUri() { protected String getShareableUri() {

View File

@ -1006,24 +1006,7 @@ public class ConversationActivity extends XmppActivity
} }
@Override @Override
public void onAccountUpdate() { protected void refreshUiReal() {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateConversationList();
ConversationActivity.this.mConversationFragment.updateMessages();
updateActionBarTitle();
}
});
}
@Override
public void onConversationUpdate() {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateConversationList(); updateConversationList();
if (conversationList.size() == 0) { if (conversationList.size() == 0) {
startActivity(new Intent(getApplicationContext(), startActivity(new Intent(getApplicationContext(),
@ -1033,29 +1016,29 @@ public class ConversationActivity extends XmppActivity
ConversationActivity.this.mConversationFragment.updateMessages(); ConversationActivity.this.mConversationFragment.updateMessages();
updateActionBarTitle(); updateActionBarTitle();
} }
});
@Override
public void onAccountUpdate() {
this.refreshUi();
}
@Override
public void onConversationUpdate() {
this.refreshUi();
} }
@Override @Override
public void onRosterUpdate() { public void onRosterUpdate() {
runOnUiThread(new Runnable() { this.refreshUi();
@Override
public void run() {
updateConversationList();
ConversationActivity.this.mConversationFragment.updateMessages();
updateActionBarTitle();
}
});
} }
@Override @Override
public void OnUpdateBlocklist(Status status) { public void OnUpdateBlocklist(Status status) {
this.refreshUi();
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
invalidateOptionsMenu(); invalidateOptionsMenu();
ConversationActivity.this.mConversationFragment.updateMessages();
} }
}); });
} }

View File

@ -32,19 +32,18 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
@Override @Override
public void onAccountUpdate() { public void onAccountUpdate() {
refreshUi();
}
@Override
protected void refreshUiReal() {
synchronized (this.accountList) { synchronized (this.accountList) {
accountList.clear(); accountList.clear();
accountList.addAll(xmppConnectionService.getAccounts()); accountList.addAll(xmppConnectionService.getAccounts());
} }
runOnUiThread(new Runnable() {
@Override
public void run() {
invalidateOptionsMenu(); invalidateOptionsMenu();
mAccountAdapter.notifyDataSetChanged(); mAccountAdapter.notifyDataSetChanged();
} }
});
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View File

@ -176,15 +176,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
@Override @Override
public void onRosterUpdate() { public void onRosterUpdate() {
runOnUiThread(new Runnable() { this.refreshUi();
@Override
public void run() {
if (mSearchEditText != null) {
filter(mSearchEditText.getText().toString());
}
}
});
} }
@Override @Override
@ -711,16 +703,15 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
@Override @Override
public void OnUpdateBlocklist(final Status status) { public void OnUpdateBlocklist(final Status status) {
runOnUiThread(new Runnable() { refreshUi();
}
@Override @Override
public void run() { protected void refreshUiReal() {
if (mSearchEditText != null) { if (mSearchEditText != null) {
filter(mSearchEditText.getText().toString()); filter(mSearchEditText.getText().toString());
} }
} }
});
}
public static class MyListFragment extends ListFragment { public static class MyListFragment extends ListFragment {
private AdapterView.OnItemClickListener mOnItemClickListener; private AdapterView.OnItemClickListener mOnItemClickListener;

View File

@ -436,11 +436,11 @@ public class VerifyOTRActivity extends XmppActivity implements XmppConnectionSer
} }
public void onConversationUpdate() { public void onConversationUpdate() {
runOnUiThread(new Runnable() { refreshUi();
}
@Override @Override
public void run() { protected void refreshUiReal() {
updateView(); updateView();
} }
});
}
} }

View File

@ -33,7 +33,9 @@ import android.nfc.NfcEvent;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.SystemClock;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.text.InputType; import android.text.InputType;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
@ -99,6 +101,33 @@ public abstract class XmppActivity extends Activity {
protected int mTheme; protected int mTheme;
protected boolean mUsingEnterKey = false; protected boolean mUsingEnterKey = false;
private long mLastUiRefresh = 0;
private Handler mRefreshUiHandler = new Handler();
private Runnable mRefreshUiRunnable = new Runnable() {
@Override
public void run() {
mLastUiRefresh = SystemClock.elapsedRealtime();
refreshUiReal();
}
};
protected void refreshUi() {
final long diff = SystemClock.elapsedRealtime() - mLastUiRefresh;
if (diff > Config.REFRESH_UI_INTERVAL) {
mRefreshUiHandler.removeCallbacks(mRefreshUiRunnable);
runOnUiThread(mRefreshUiRunnable);
} else {
final long next = Config.REFRESH_UI_INTERVAL - diff;
mRefreshUiHandler.removeCallbacks(mRefreshUiRunnable);
mRefreshUiHandler.postDelayed(mRefreshUiRunnable,next);
}
}
protected void refreshUiReal() {
};
protected interface OnValueEdited { protected interface OnValueEdited {
public void onValueEdited(String value); public void onValueEdited(String value);
} }