Деятельность предположительно уничтожена. Тем не менее, это воссоздано Android без меня явно запустить его? - PullRequest
0 голосов
/ 09 сентября 2018

Итак, я столкнулся со странным поведением.Я реализую шаблон проектирования MVP в моем приложении.У меня есть 2 действия, A и B. Ведущий действия A прослушивает сокетное соединение с сервером.В методе onDestroy () действия я вызываю метод для отмены регистрации докладчика в классе помощника сокетов.

В случае определенного сообщения «TYPE X» из сокета я запускаю новое действие B.Метод onDestroy () вызывается нормально, а слушатель сокета не регистрируется.

Вот странная часть.При получении сообщения того же ТИПА "X" действие A воссоздается, а действие B перезапускается, повторяя весь цикл снова.

Упражнение A:

@Override
protected void onDestroy() {
    mainActivityPresenter.terminate();
    // some code
    super.onDestroy();
}

Докладчик:

@Override
public void terminate() {
    socketHelper.unregisterListener(socketListener);
}

У кого-нибудь есть объяснение этому поведению?

Редактировать: добавлен фрагмент кода того, как я начинаю новое действие.

@Override
public void showOrderActivity(int orderType) {
    Intent orderIntent = new Intent(MainActivity.this, OrderActivity.class);
    orderIntent.putExtra(Constants.BUNDLE_CONTENT_NAME, orderType);
//        orderIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
//        orderIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//        orderIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//        finishAffinity();
//        orderIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(orderIntent);
    finish();
}

Код с комментариямимои испытания, чтобы удостовериться, что Деятельность А уничтожена.

...