Asynctask期间onRefresh()中的Handler()

时间:2014-08-26 06:41:50

标签: android android-asynctask refresh swiperefreshlayout

所以我有这个ListView,我想向下滚动并刷新。我正在使用SwipeRefreshLayout并且它工作得很好,除了我无法安排Handler方法中的onRefresh()等待的时间。所以这是onRefresh()

@Override
public void onRefresh() {
    final String net = getString(R.string.alertin);
    final String netErr = getString(R.string.alert_intext);
    ConnectivityManager conn = (ConnectivityManager) 
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ntwrkInf = conn.getActiveNetworkInfo();
    if (ntwrkInf != null && ntwrkInf .isConnected()) {
        ListReq refList = new ListReq();
        refList.execute();
    } else {
        AlertDialogDisp(Main.this, net, netErr);
    }       
    new Handler().postDelayed(new Runnable() {
        @Override public void run() {
            mSwipeRefreshLayout.setRefreshing(false);
        }
    }, 5000); // so it's here, I just put 5000 randomly.
}

并且正如您所期望的那样,5000 Asynctask完成其工作的数量不合适。我如何安排这个并获得令人耳目一新的动画'完成Asynctask结束? 提前致谢

2 个答案:

答案 0 :(得分:0)

在AsyncTask中,方法是postExecute(),当AsyncTask完成其工作时,它将被调用。 所以只需要在正确的时间通知asynk电话。没有arbiraly将其设置为5000

答案 1 :(得分:0)

AsyncTask覆盖方法onPostExecute()。当AsyncTask完成其任务时,将调用此方法。

会是这样的:

public class Task extends AsyncTask<Void, Void,Void> {

protected void doInBackground(Void ...) {
    //Your process
}

@Override
protected void onPostExecute(Void...) {
    //Call your onRefresh()
}