AsyncTask и контексты

Таким образом, я разрабатываю свое первое многопоточное приложение с помощью Android с классом AsyncTask. Я пытаюсь использовать его, чтобы исчерпать Геокодер во втором потоке, затем обновить UI с onPostExecute, но я продолжаю сталкиваться с проблемой с надлежащим Контекстом.

Я отчасти создавал помехи своему пути посредством использования Контекстов на основном потоке, но я не абсолютно уверен, что Контекст или как использовать его на фоновых потоках, и я не нашел хороших примеров на нем. Какая-либо справка? Вот выборка того, что я пытаюсь сделать:

public class GeoCode extends AsyncTask<GeoThread, Void, GeoThread> {
  @Override
  protected GeoThread doInBackground(GeoThread... i) {
    List<Address> addresses = null;
    Geocoder geoCode = null; 
    geoCode = new Geocoder(null); //Expects at minimum Geocoder(Context context);
    addresses = geoCode.getFromLocation(GoldenHour.lat, GoldenHour.lng, 1);
  }
}

Это продолжает перестать работать в шестой строке там из-за неподходящего Контекста.

19
задан Segfault 4 March 2010 в 17:37
поделиться

2 ответа

Я провел еще несколько исследований, и кто-то предложил передать его в ветку (не знаю, почему я не подумал об этом). Я передал его потоку геокодера через аргумент, и все заработало.

2
ответ дан 30 November 2019 в 04:29
поделиться

Контекст - это объект, который предоставляет доступ в среду выполнения приложения. В большинстве случаев, когда вам нужно получить объекты из среды Android, такие как ресурсы, представления, классы инфраструктуры и т. Д., Вам необходимо иметь Context в ваших руках.

Получить экземпляр контекста очень просто, когда вы находитесь в классе Activity - Activity сама по себе является подклассом контекста, поэтому все, что вам нужно сделать, - это использовать ключевое слово this, чтобы указать на ваш текущий контекст. .

Когда бы вы ни создавали код, который может потребовать Context - вам следует позаботиться о том, чтобы передать объект Context из родительского Activity. В случае вашего примера вы можете добавить явный конструктор, который принимает контекст в качестве входного аргумента.

4
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: