Buggy code:
public ShowProgressHandler ( @ NonNull final CGeoMap map ) { } @ Override public void handleMessage ( final Message msg ) { } private void showProgress ( final boolean show ) { } } private final Handler showProgressHandler = new CGeoMap . ShowProgressHandler ( this ) ; private final class LoadDetailsHandler extends CancellableHandler { @ Override public void handleRegularMessage ( final Message msg ) { } @ Override public void handleCancel ( final Object extra ) { } } private int currentSourceId ; public CGeoMap ( final MapActivityImpl activity ) { } protected void countVisibleCaches ( ) { } @ Override public void onSaveInstanceState ( final Bundle outState ) { } @ TargetApi ( VERSION_CODES . ICE_CREAM_SANDWICH ) @ Override public void onCreate ( final Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; res = this . getResources ( ) ; activity = this . getActivity ( ) ; final MapProvider mapProvider = Settings . getMapProvider ( ) ; mapItemFactory = mapProvider . getMapItemFactory ( ) ; final Bundle extras = activity . getIntent ( ) . getExtras ( ) ; if ( extras != null ) { mapMode = ( ( CGeoMap . MapMode ) ( extras . get ( EXTRA_MAP_MODE ) ) ) ; isLiveEnabled = extras . getBoolean ( EXTRA_LIVE_ENABLED , false ) ; searchIntent = extras . getParcelable ( EXTRA_SEARCH ) ; geocodeIntent = extras . getString ( EXTRA_GEOCODE ) ; coordsIntent = extras . getParcelable ( EXTRA_COORDS ) ; waypointTypeIntent = WaypointType . findById ( extras . getString ( EXTRA_WPTTYPE ) ) ; mapStateIntent = extras . getIntArray ( EXTRA_MAPSTATE ) ; mapTitle = extras . getString ( EXTRA_MAP_TITLE ) ; } else { mapMode = CGeoMap . MapMode . LIVE ; isLiveEnabled = Settings . isLiveMap ( ) ; } if ( StringUtils . isBlank ( mapTitle ) ) { mapTitle = res . getString ( map_map ) ; } ArrayList < Location > trailHistory = null ; if ( savedInstanceState != null ) { currentSourceId = savedInstanceState . getInt ( CGeoMap . BUNDLE_MAP_SOURCE , Settings . getMapSource ( ) . getNumericalId ( ) ) ; mapStateIntent = savedInstanceState . getIntArray ( CGeoMap . BUNDLE_MAP_STATE ) ; isLiveEnabled = savedInstanceState . getBoolean ( CGeoMap . BUNDLE_LIVE_ENABLED , false ) ; trailHistory = savedInstanceState . getParcelableArrayList ( CGeoMap . BUNDLE_TRAIL_HISTORY ) ; } else { currentSourceId = Settings . getMapSource ( ) . getNumericalId ( ) ; } if ( changeMapSource ( Settings . getMapSource ( ) ) ) { return ; } noMapTokenShowed = false ; ActivityMixin . onCreate ( activity , true ) ; ActivityMixin . setTheme ( activity ) ; if ( ( VERSION . SDK_INT ) >= ( VERSION_CODES . ICE_CREAM_SANDWICH ) ) { activity . getActionBar ( ) . setDisplayHomeAsUpEnabled ( true ) ; } activity . setContentView ( mapProvider . getMapLayoutId ( ) ) ; setTitle ( res . getString ( map_map ) ) ; mapView = ( ( MapViewImpl ) ( activity . findViewById ( mapProvider . getMapViewId ( ) ) ) ) ; mapView . setMapSource ( ) ; mapView . setBuiltInZoomControls ( true ) ; mapView . displayZoomControls ( true ) ; mapView . preLoad ( ) ; mapView . setOnDragListener ( new CGeoMap . MapDragListener ( this ) ) ; mapView . clearOverlays ( ) ; overlayCaches = mapView . createAddMapOverlay ( mapView . getContext ( ) , getResources ( ) . getDrawable ( marker ) ) ; overlayPositionAndScale = mapView . createAddPositionAndScaleOverlay ( coordsIntent , geocodeIntent ) ; if ( trailHistory != null ) { overlayPositionAndScale . setHistory ( trailHistory ) ; } mapView . repaintRequired ( null ) ; setZoom ( Settings . getMapZoom ( mapMode ) ) ; mapView . getMapController ( ) . setCenter ( Settings . getMapCenter ( ) ) ; if ( null == ( mapStateIntent ) ) { <START_BUG> CGeoMap . followMyLocation &= ( mapMode ) == ( CGeoMap . MapMode . LIVE ) ; <END_BUG> } else { CGeoMap . followMyLocation = 1 == ( mapStateIntent [ 3 ] ) ; if ( ( overlayCaches . getCircles ( ) ? 1 : 0 ) != ( mapStateIntent [ 4 ] ) ) { overlayCaches . switchCircles ( ) ; } } if ( ( ( ( ( geocodeIntent ) != null ) || ( ( searchIntent ) != null ) ) || ( ( coordsIntent ) != null ) ) || ( ( mapStateIntent ) != null ) ) { centerMap ( geocodeIntent , searchIntent , coordsIntent , mapStateIntent ) ; } final CheckBox locSwitch = ButterKnife . findById ( activity , my_position ) ; if ( locSwitch != null ) { initMyLocationSwitchButton ( locSwitch ) ; } prepareFilterBar ( ) ; final View overflowActionBar = ButterKnife . findById ( activity , overflowActionBar ) ; if ( overflowActionBar != null ) { honeycombMenu = true ; overflowActionBar . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( final View v ) { showPopupHoneycomb ( v ) ; } } ) ; } if ( ( ! ( CgeoApplication . getInstance ( ) . isLiveMapHintShownInThisSession ( ) ) ) && ( ( Settings . getLiveMapHintShowCount ( ) ) <= 3 ) ) { LiveMapInfoDialogBuilder . create ( activity ) . show ( ) ; } AndroidBeam . disable ( activity ) ; } private void initMyLocationSwitchButton ( final CheckBox locSwitch ) { } private void setZoom ( final int zoom ) { } private void prepareFilterBar ( ) { } @ Override public void onResume ( ) { } @ Override public void onPause ( ) { } @ Override public void onStop ( ) { } @ TargetApi ( VERSION_CODES . HONEYCOMB ) private void showPopupHoneycomb ( final View view ) { } @ TargetApi ( VERSION_CODES . ICE_CREAM_SANDWICH ) @ Override public boolean onCreateOptionsMenu ( final Menu menu ) { } @ Override public boolean onPrepareOptionsMenu ( final Menu menu ) { }

Fix:
CGeoMap . followMyLocation = ( CGeoMap . followMyLocation ) && ( ( mapMode ) == ( CGeoMap . MapMode . LIVE ) ) ;