2017-01-20 1 views
1

У меня есть поисковая система Google, которая не имеет успеха, и швы очень странные для меня.Android дублирует активность при минимизации, затем максимизируется

Я создаю простое приложение GPS, которое посылает координаты с HttpRequest, хотя я заметил, что при минимизации пользовательского интерфейса, а затем максимизации, он запускает дубликат того же действия. и сгибает на HttpRequest-х

private LocationManager locationManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps); 
    processExtraData(); 

} 


private void processExtraData() { 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.removeUpdates(this); 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
      10000, 5, this); 
} 


    @Override 
    public void onLocationChanged(Location location) { 
     Bundle extras = getIntent().getExtras(); 
     String driver_id = extras.getString("driverid"); 

     String msg = "Driver:" + driver_id + "\nCurrent Location:\nLatitude: " + location.getLatitude() 
       + "\nLongitude: " + location.getLongitude(); 

     new HttpRequestTask(
       new HttpRequest("https://www.autoflora.net/driver/gps.php?user_id=" + driver_id + "&latlong=" + location.getLatitude() + "*" + location.getLongitude(), HttpRequest.POST, "{ \"some\": \"data\" }"), 
       new HttpRequest.Handler() { 
        @Override 
        public void response(HttpResponse response) { 
         if (response.code == 200) { 
          Log.d(this.getClass().toString(), "Request successful!"); 
         } else { 
          Log.e(this.getClass().toString(), "Request unsuccessful: " + response); 
         } 
        } 
       }).execute(); 
     String s = calc.getText().toString(); 
     calc.setText(s + "1") 

     TextView driver = (TextView) findViewById(R.id.driver); 
     driver.setText("" + driver_id); 

     TextView Longitude = (TextView) findViewById(R.id.longitude); 

     // Getting reference to TextView tv_latitude 
     TextView Latitude = (TextView) findViewById(R.id.latitude); 

     // Setting Current Longitude 
     Longitude.setText("Longitude:" + location.getLongitude()); 

     // Setting Current Latitude 
     Latitude.setText("Latitude:" + location.getLatitude()); 

     // Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show(); 
    } 
+0

После дальнейших исследований, я считаю, что это либо requestLocationUpdates() или HttpRequestTask(), который дублирует это сам ... Любые решения? - – Ben

+0

Что вы подразумеваете под «минимизацией, а затем максимизацией»? Какие конкретные кнопки вы используете? –

+0

извините .. это должно было быть обновлено. когда приложение находится в фокусе или нет – Ben

ответ

1

заметил при минимизации пользовательского интерфейса, то максимизация

Там не является ни minimising, ни maximizing пользовательского интерфейса на Android. Вы, очевидно, снова начинаете свою деятельность с помощью пусковой установки (это, скорее всего, ваша вещь maximizing), которая создает новый экземпляр вашей деятельности. Если вы хотите, чтобы только один экземпляр разрешал независимо от того, что вы, вы должны установить систему, используя android:launchMode в объявлении активности в вашем файле манифеста. См. docs here для возможных вариантов.

+0

Спасибо за ваш вклад. Марцин, к сожалению, не работал. Я также пробовал все параметры запуска, а также намерение.setFlags() также с успехом. Я заметил, что при изменении режимов запуска были некоторые различия, но, тем не менее, 2-й актив всегда создает новый, если я не закрываю вручную все приложение – Ben

0
@Override 
    public void onStart() { 
     super.onStart(); 
     Toast.makeText(getBaseContext(), "start", Toast.LENGTH_LONG).show(); 

     locationManager.removeUpdates(this); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Toast.makeText(getBaseContext(), "resume", Toast.LENGTH_LONG).show(); 
     locationcheck(); // checks permissions 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     Toast.makeText(getBaseContext(), "pause", Toast.LENGTH_LONG).show(); 


    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
    // locationManager.removeUpdates(this); 
     Toast.makeText(getBaseContext(), "stop", Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(getBaseContext(), "destroy", Toast.LENGTH_LONG).show(); 
     locationManager.removeUpdates(this); 
     finish(); 

    } 

Кажется, закрепилась это ..