J'essaie de créer un MapView sur un autre thread, car il faut trop de temps pour charger une activité.Android: Créer MapView sur Asynctask ne fonctionne pas
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
}
}
Le programme arrête à "ThreadPoolExecutor.class" à:
} finally {
processWorkerExit(w, completedAbruptly);
}
Note: Je ne sais au sujet de la limite MapActivity/MapView de 1 instance par processus. Je n'ai pas créé un objet MapView avant d'exécuter cette asyncTask.
Vous ne pouvez pas modifier l'interface utilisateur de toute discussion autre que UIThread. –
Alors, comment puis-je créer un ListView (sous-classe de ViewGroup) dans ce nouveau thread ainsi que d'autres types de vues, mais je ne peux pas créer un MapView (sous-classe de ViewGroup) dans ce nouveau thread? – ninjaneer
Parce que vous avez créé le 'RelativeLayout' sur le Thread UI. (Appelé' setContentView() ') alors maintenant vous allez ajouter une View à ce' RelativeLayout' d'un autre 'Thread' ajouter' MapView' dans 'onPostExecute (MapView someMapView) ' –