android AsyncTask 的基本使用

1.首先写一个类继承AsyncTask   如:class DownloadTask extends AsyncTask<Parms, Process, Result>,

  parms是执行asynctask传入的参数,是调用doInBackground传入的参数,如:task.execute("First parameter", "Second parameter", "Etc.")如:

AsyncTask<String,Void,Void> task = new AsyncTask<String,Void,Void>{
public Void doInBackground(String... params) {
  for (String parameter : params) {
    Log.i(TAG, "Received parameter: " + parameter);
  }
  }
};

  process是 显示当前进度 ,progress是onprogressUpdate方法的参数 ,如

AsyncTask<Void,Integer,Void> task = new AsyncTask<Void,Integer,Void>{
public void onProgressUpdate(Integer... params) {   int progress = params[0];   gestationProgressBar.setProgress(progress);   }
}

   Result是 当任务执行完毕后,对结果进行返回. Result 是doInBackground 的返回值如:

private class FetchItemsTask extends AsyncTask<Void,Void,List<GalleryItem>>{

        @Override
        protected List<GalleryItem> doInBackground(Void... params) {
            return new FlickrFetchr().fetchItems();
        }
}

2.根据需要复写其中的方法,方法有以下几个:

  Void onPreExecute() 这个方法会在后台任务开始执行之前调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。

  Result doInBackground(Params...)这个方法中的所有代码都会在子线程中运行,我们应该在这里去处理所有的耗时任务。如果需要更新 UI 元素,可以调用 publishProgress(Progress...)方法来完成。

  Void onProgressUpdate(Progress...)当在后台任务中调用了 publishProgress(Progress...)方法后,这个方法就会很快被调用,方法中携带的参数就是在后台任务中传递过来的。

  Void onPostExecute(Result)当后台任务执行完毕并通过 return 语句进行返回时,这个方法就很快会被调用。返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些 UI 操作.Result 参数是doInBackground 方法的返回值 .

3.如果想要启动这个任务,只需编写以下代码即可:new DownloadTask().execute();

原文地址:https://www.cnblogs.com/IT-lss/p/5661393.html