Как вызвать все действия onDestroy (), когда MainAcitivty вызывает onDestroy ()? - PullRequest
1 голос
/ 30 января 2020

Я сделал два действия для теста.

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, SubActivity.class));
            }
    }

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

Эта кнопка в MainActivity может запускать SubActivity.

public class SubActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
    }

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

    @Override
    public void onBackPressed() {
        startActivity(new Intent(SubActivity.this, MainActivity.class));
    }
}

Когда в SubActivity нажмите кнопку назад, она не вызывает onDestroy() in SubActivity class и запуск MainActivity. Что я хочу сделать, это как назвать SubActivity onDestroy(), когда я заканчиваю sh MainActivity? SubActivity onDestroy() не вызывается, когда я нажимаю кнопку возврата в MainActivity. Есть ли какое-либо решение, например, использование Intent.FLAG_ACTIVITY?

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Предлагаемое решение здесь работало для меня:

В Java: -

    Intent i = new Intent(OldActivity.this, NewActivity.class);
// set the new task and clear flags
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);

В Kotlin: -

val i = Intent(OldActivity.this, NewActivity::class.java)
// set the new task and clear flags
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(i)
0 голосов
/ 30 января 2020

Вы должны finish() ваш SubActivity в onBackPressed, чтобы уничтожить его и go вернуться к вашему MainActivity, вместо того, чтобы делать startActivity. Во многих случаях такое поведение вы получите, даже если сами не реализуете onBackPressed. Ваш текущий код начинает второй MainActivity.

...