從未消失情況是這樣的:搜索GPS圖標上Android中保留片段與MyLocationOverlay(osmdroid)
我有一個活性用含有三個片段一個PagerAdapter。此活動允許您更改屏幕方向。
其中一個片段具有使用osmdroid庫創建的mapView,並保留此片段(setRetainInstance(true))。在每個方向改變,事件onCreateView再次觸發:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
fragmentView = (LinearLayout) inflater.inflate(R.layout.main,
container, false);
mapView = (MapView) fragmentView.findViewById(R.id.practice_mapview);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setUseSafeCanvas(true);
setHardwareAccelerationOff();
mapController = (MapController) mapView.getController();
[...]
mLocationOverlay = new MyLocationOverlay(getActivity(), mapView);
mLocationOverlay.setDrawAccuracyEnabled(true);
[...]
mapView.invalidate();
return fragmentView;
}
在開始一切正常,但是當我旋轉手機句子「mLocationOverlay =新MyLocationOverlay(getActivity(),MapView類);」是再次執行,這意味着,當您關閉應用程序時,GPS圖標永遠不會消失。
如果您不旋轉手機,該圖標會在應用程序關閉時消失。
這是我對的onPause事件:
@Override
public void onPause() {
mLocationOverlay.disableCompass();
if (this.getActivity().isFinishing()) {
disableMyLocation();
releaseLocationOverlay();
}
cleanMapViewCache();
}
private void disableMyLocation() {
if (mLocationOverlay.isMyLocationEnabled() == true)
mLocationOverlay.disableMyLocation();
if (mLocationOverlay.isFollowLocationEnabled() == true)
mLocationOverlay.disableFollowLocation();
}
private void releaseLocationOverlay() {
if (mLocationOverlay != null) {
mapView.getOverlays().remove(mLocationOverlay);
mLocationOverlay = null;
}
}
private void cleanMapViewCache() {
mapView.getTileProvider().clearTileCache();
System.gc();
}
矽恩EL事件摘要onCreateView哈戈埃斯特sencillo控制EL problema desaparece:
如果我把在onCreateView事件這種控制,問題消失:
if (this.getActivity().isFinishing())
mLocationOverlay = new MyLocationOverlay(getActivity(), mapView);
不過,除其他事項外,我不能再中心:
mapController.animateTo(mLocationOverlay.getMyLocation());
有什麼想法嗎?有什麼我做錯了?
如果你需要更多的代碼,你沒有更多的話要說。謝謝!這裏