6

doInBackground 内では、アプリケーション コンテキストまたはアクティビティを参照する必要があります。

スレッドセーフと他の考えられるマルチスレッドの概念、制限に関してnew MyAsyncTask(getApplicationContext())との間に違いはありますか?doInBackground(Context... params)

ありがとう。

4

1 に答える 1

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 useMe = getApplicationContext();
MyAsyncTask task = new MyAsyncTask(useMe);
task.execute(useMe); // should use this if provided, otherwise, what was in constructor
于 2014-11-19T19:25:01.933 に答える