我想在另一個線程上創建一個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)' –