Приложение Android сбоит каждый второй раз только в леденце

Я новичок в Android Studio и занимаюсь разработкой приложения для одного местоположения. Здесь мне нужно закрыть приложение в какой-то момент, поэтому я вызвал finish(); функция и убил процесс в onDestroy()

Проблема: все прекрасно работает в Android 4.4(Kitkat), но вылетает в Lollipop (вылетает при втором открытии приложения после установки)

public void onClick(){
    finish();
}

@Override                   //------------after the finish(); called---//
protected void onDestroy() {
    Process.killProcess(Process.myPid());
    super.onDestroy();
}

@Override
public void onBackPressed() {
    super.onBackPressed();
}

@Override
protected void onPause() {
    super.onPause();
}    

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    from = (EditText) findViewById(R.id.from);
    to = (EditText) findViewById(R.id.to);
    go = (Button) findViewById(R.id.go);
    resulted = (TextView) findViewById(R.id.result);
    time = (TextView) findViewById(R.id.time1);
    button = (Button) findViewById(R.id.button);


    android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(true);

     audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);


    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    pb = (ProgressBar) findViewById(R.id.progressBar1);
    pb.setVisibility(View.INVISIBLE);
    locationManager =            (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    go.setOnClickListener(new View.OnClickListener() {
                              public void onClick(View v) {

                                  str_from1=from.getText().toString();
                                  str_to1=to.getText().toString();

                                             str_from1 = str_from1.replaceAll("[^\\w]+", "+");
                                              str_to1 = str_to1.replaceAll("[^\\w]+", "+");
                                              new JSONTask().execute("https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + str_from1 + "&destinations=" + str_to1 + "&mode=driving&language=fr-FR&key=API KEY");
                              }
                          }
    );
}

1 ответ

Решение

Ну, тебе не нужно убивать процесс. Вызова finish() должно быть достаточно; он разрушит текущую активность в течение своего естественного жизненного цикла, и, если это последняя активность, действующая, приложение будет эффективно закрыто.

Для дальнейшего обсуждения того, почему вы не должны идти в этом направлении: не одобряется ли выход из приложения?

С уважением!

Другие вопросы по тегам