@Override public TiUIView createView(Activity activity) { // for HW windows, we often don't have the correct activity available until this point // so set the passed in activity on the proxy for future use if (activity != getActivity()) { setActivity(activity); } ((TiBaseActivity) activity).addOnLifecycleEventListener(this); destroyed = false; if (lam == null) { /* * TiContext tiContext = getTiContext(); * if (tiContext == null) { * Log.w(LCAT, "MapView proxy context is no longer valid. Unable to create MapView."); * return null; * } */ final TiRootActivity rootActivity = TiApplication.getInstance().getRootActivity(); if (rootActivity == null) { Log.w(TAG, "Application's root activity has been destroyed. Unable to create MapView."); return null; } /* * TiContext rootContext = rootActivity.getTiContext(); * if (rootContext == null) { * Log.w(LCAT, "Application's root context is no longer valid. Unable to create MapView."); * return null; * } */ // We need to know when root activity destroys, since this lam is // based on its context; rootLifecycleListener = new OnLifecycleEvent() { @Override public void onCreate(Activity activity, Bundle savedInstanceState) {} @Override public void onStop(Activity activity) {} @Override public void onStart(Activity activity) {} @Override public void onResume(Activity activity) {} @Override public void onPause(Activity activity) {} @Override public void onDestroy(Activity activity) { if (activity != null && activity.equals(rootActivity)) { destroyMapActivity(); lam = null; } } }; TiApplication.getInstance() .getRootActivity() .addOnLifecycleEventListener(rootLifecycleListener); lam = new LocalActivityManager(rootActivity, true); lam.dispatchCreate(null); } if (mapWindow != null) { throw new IllegalStateException( "MapView already created. Android can support one MapView per Application."); } for (int i = 0; i < annotations.size(); i++) { annotations.get(i).setViewProxy(this); } TiApplication tiApp = TiApplication.getInstance(); Intent intent = new Intent(tiApp, TiMapActivity.class); mapWindow = lam.startActivity("TIMAP", intent); lam.dispatchResume(); mapView = new TiMapView(this, mapWindow, annotations, selectedAnnotations); Object location = getProperty(TiC.PROPERTY_LOCATION); if (location != null) { if (location instanceof HashMap) { mapView.doSetLocation((HashMap) location); } else { Log.w(TAG, "Location is set, but the structure is not correct", Log.DEBUG_MODE); } } mapView.updateAnnotations(); mapView.updateRoute(); return mapView; }