最初のロード時にユーザーの現在の場所を特定し、MapView でその場所に移動する最初の Android アプリを作成しています。アプリの応答性を高めるために、MapView/MapController の初期化を AsyncTask に委任しましたが、doInBackground メソッドで RuntimeException が発生しています。これが私の最初のアクティビティと私が使用している AsyncTask のコードです。
public class MainActivity extends MapActivity {
Location latestLocation, targetLocation;
MapController mapController;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get a reference to the MapView
MapView myMapView = (MapView)findViewById(R.id.myMapView);
MapLoader map = new MapLoader();
try {
map.execute(myMapView).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
mapController = myMapView.getController();
//code which determines current location and animates to it in the Mapview.
}
}
そして、これが私の AsyncTask のコードです。
public class MapLoader extends AsyncTask<MapView ,Void, Void>{
MapController mapController;
MapView mapView;
@Override
protected Void doInBackground(MapView... params) {
// Get the Map View’s controller
mapController = params[0].getController();
// Configure the map display options
mapView.setSatellite(true);
mapView.displayZoomControls(false);
// Zoom in
mapController.setZoom(19);
return null;
}
}
AsyncTask 内にも場所を特定するためのコードを配置する必要がありますか? 現在、私のアプリは読み込みがかなり遅く、すべてが初期化された後でもまったく反応しません。