Use 50% Discount for all private proxies!
Unlimited possibilities with ExtraProxies

¿como obtener coordenadas en un hilo secundario?

Si ejecuto obtenerCoordenadas() en el hilo principal, funciona bien (obtengo las coordenadas incluso cuando se cambia de posicion),

Si ejecuto runThread() solo, funciona bien

Si ejecuto obtenerCoordenadas dentro de runThread(), no funciona se bloquea y se sale.

¿Como puedo adaptar el código obtenerCoordenadas para que me funcione dentro de runThread? y así obtener las coordenadas en un hilo aparte al principal.

Quiero obterner las coordenadas en un hilo secundario, porque si las obtengo en el principal y las coordenadas cambian muy rapido se bloquea la aplicación

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);  //  obtenerCoordenadas();     runThread();      }    private void runThread() {      new Thread(new Runnable() {         @Override         public void run() {              obtenerCoordenadas();              //Inicio actualizacion hilo principal                     runOnUiThread(new Runnable() {                         @Override                         public void run() {                             Toast.makeText(getApplicationContext(), "Coordenadas: " +latitude+" "+longitude, Toast.LENGTH_LONG).show();                          }                     });                     //Fin actualizacion hilo principal          }     }).start(); }   public void obtenerCoordenadas() {      if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123);     }      latlon = (LocationManager) getSystemService(Context.LOCATION_SERVICE);     Location loca = latlon.getLastKnownLocation(LocationManager.GPS_PROVIDER);      if (loca != null) {         Toast.makeText(getApplicationContext(),"A-lat: "+loca.getLatitude()+" \n A-lon: "+loca.getLongitude()+" \n ALT: ", Toast.LENGTH_SHORT ).show();     }      LocationListener locationListener;      locationListener = new LocationListener() {          @Override         public void onLocationChanged(Location location) {             latitude = location.getLatitude();             longitude = location.getLongitude();         }          @Override         public void onStatusChanged(String provider, int status, Bundle extras) {             LocationListener.super.onStatusChanged(provider, status, extras);         }          @Override         public void onProviderEnabled(@NonNull String provider) {             LocationListener.super.onProviderEnabled(provider);         }          @Override         public void onProviderDisabled(@NonNull String provider) {             LocationListener.super.onProviderDisabled(provider);         }     };      latlon.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,100,locationListener);  } 
Related Posts