android:
管理類代碼如下:
public class KapSearchRunnableHelper implements Runnable {
private Runnable runnable = null;
public KapSearchRunnableHelper(Runnable able){
runnable = able;
}
private KapSearchRunnableHelper(){}//私有化
Handler handler = new Handler();
public void pushKeyWord(){
handler.removeCallbacks(this);// 移除請求
handler.postDelayed(this,500);// 添加請求
}
@Override
public void run() {
//此處發起Http請求
runnable.run();
}
}
使用如下:
final KapSearchRunnableHelper searchRunnableHelper = new KapSearchRunnableHelper(new Runnable() {
@Override
public void run() {
postList(0);//網絡請求
}
});
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//防止鋪天蓋地的請求 SearchRunnable管理
searchRunnableHelper.pushKeyWord();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
iOS:
代碼如下:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
//實時搜索(連續輸入的時候不請求)
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(postList:) object:searchBar];
[self performSelector:@selector(postList:) withObject:searchBar afterDelay:0.1];
}