AsyncTask doInBackground参数与构造函数参数

时间:2012-10-11 08:56:26

标签: android

在doInBackground中我需要引用应用程序上下文或活动。

在线程安全和其他可能的多线程概念,限制方面,new MyAsyncTask(getApplicationContext())doInBackground(Context... params)之间是否有任何区别?

感谢。

1 个答案:

答案 0 :(得分:1)

没有。假设你有类似的东西:

private class MyAsyncTask extends AsyncTask<Context, Integer, Long> {
  private Context _context = null;

  MyAsyncTask(Context context) {
    _context = context;
  }

  protected Long doInBackground(Context... context) {
     // if _context and context are the same, it doesn't matter
     // which you use.
     return 0;
  }

  protected void onProgressUpdate(Integer... progress) {
    // update progress
  }

  protected void onPostExecute(Long result) {
    // publish result
  }
}

然后,关于Context本身的多线程没有固有的问题。

Context useMe = getApplicationContext();
MyAsyncTask task = new MyAsyncTask(useMe);
task.execute(useMe); // should use this if provided, otherwise, what was in constructor