所以我正在使用Android的AsyncTask类来编写我的第一个多线程应用程序。我试图在第二个线程中使用它来触发一个Geocoder,然后使用onPostExecute更新UI,但是我一直遇到适当的Context问题。
我有点费劲地在主线程上使用Contexts,但我不太确定Context是什么以及如何在后台线程上使用它,而且我没有找到任何好的例子。有帮助吗?这是我尝试做的事情的摘录:
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);
}
}
第六行一直在失败,因为Context不正确。
AsyncTask
是一个内部类(非静态),它对封闭的Activity
有隐式引用。即使您根本不传递Context
,这也会导致内存泄漏。因此,WeakReference
无法解决此问题! - Vasiliy