Я создал приложение, используя mapActivity и MapView, и обнаружил странное сообщение:
"E / AndroidRuntime (4276): java.lang.IllegalArgumentException: ширина и высота должны быть> 0"
это сообщение не всегда отображается. Я проследил ситуацию, в которой он обнаружился, и обнаружил следующее:
1) Если прошло много времени с тех пор, как я коснулся приложения, а затем запустил его, появится сообщение о сбое, обратите внимание, что если после сбоя я снова открою приложение, то снова произойдет NO .
2) если я удалю память (RAM), то после запуска приложения произойдет сбой.
3) если я запускаю режим дибуга, я никогда не сталкиваюсь с крахом ...
с моей точки зрения, я думаю, что авария связана с чем-то, что Android еще не испортил, но все еще пытается его отобразить.
Тем не менее, я не касаюсь параметров неправильного просмотра карты, так почему я должен когда-либо получать этот сбой?
В любом случае, я понятия не имею, что делать, так как режим отладки здесь не поможет.
я буду отображать мой onCreate () здесь:
/******************************** Methods *****************************************
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //get rid of the title bar of the window, NOTE: we have to do this BEFORE we call "setContentView()"
//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); //this line is use to remove the uppermost bar in the window (the one with the time , etc.)
setContentView(R.layout.create_map);
mMapView = (MapView)findViewById(R.id.mapview);
moveDotBtn = (Button)findViewById(R.id.movedot);
finishBuildBtn = (Button)findViewById(R.id.finish);
mapController = mMapView.getController();
mMapOverlays = mMapView.getOverlays();
mMapView.setBuiltInZoomControls(true);
mMapView.setSatellite(false);
mMapView.setStreetView(false);
whereAmI = new MyCustomLocationOverlay(this, mMapView,mapController);
mMapView.getOverlays().add(whereAmI);
//mMapView.postInvalidate(); //without that call the overlay "where_m_i" will not show.
sensor_mgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //activate for compass
sensor = sensor_mgr.getDefaultSensor(Sensor.TYPE_ORIENTATION); //activate for compass, and orientation
powerManager =(PowerManager)getSystemService(Context.POWER_SERVICE); //to make always on, and never looked
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
locMgr = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lastLocation = null;
Touchy t = new Touchy();
mMapOverlays.add(t);
iconItems = getResources().getStringArray(R.array.icons);
RES = getResources();
mIconOverlays = new IconItemizedOverlay(RES.getDrawable(R.drawable.ic_bench));
mMapOverlays.add(mIconOverlays);
mapController.setZoom(17);
}
@Override
public void onResume()
{
wakeLock.acquire(); //make your phone awake at all times.
locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0 , whereAmI);
locMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0 , whereAmI);
whereAmI.enableMyLocation();
whereAmI.enableCompass();
findLastKnownLocation();
sensor_mgr.registerListener(sensorEventListener , sensor ,SensorManager.SENSOR_DELAY_NORMAL);
super.onResume();
}