我想在另一个线程上创建一个MapView,因为它需要太长时间才能加载活动。Android:在Asynctask上创建MapView不起作用
class MapCreation extends AsyncTask<Integer, Void, MapView>
{
MapActivity context;
public MapCreation(MapActivity context)
{
this.context = context;
}
@Override
protected MapView doInBackground(Integer... params)
{
ListView someListView = new ListView(context); //Completely fine!
MapView someMapView = new MapView(context, OMITTED_KEY); //!!!!CRASH!!!!
return someMapView;
}
protected void onPostExecute(MapView someMapView)
{
//do something
}
}
程序停止在 “ThreadPoolExecutor.class” 上:
} finally {
processWorkerExit(w, completedAbruptly);
}
注:我不知道每个进程1个实例的MapActivity/MapView的限制。在执行此AsyncTask之前,我没有创建MapView对象。
不能从UI比UIThread其他任何线程改变。 –
那么我怎么能够在这个新线程以及其他类型的视图中创建一个ListView(ViewGroup的子类),但是我不能在这个新线程中创建一个MapView(ViewGroup的子类)? – ninjaneer
因为你已经在UI Thread上创建了'RelativeLayout'(虽然名为'setContentView()'),所以现在你要添加一个视图到来自另一个'Thread'的'RelativeLayout',在'onPostExecute (MapView someMapView)' –