Android - Твиттер странно ведет себя, когда приложение очищается из памяти - PullRequest
0 голосов
/ 25 января 2019

У меня проблема с входом в Twitter (через TwitterKit), когда я пытаюсь войти в систему, и приложение уничтожается из памяти.Весь процесс происходит внутри DialogFragment.

Я обрабатываю savedInstanceState для восстановления интерфейса.

Странная часть начинается здесь.Когда начинается процесс входа в систему, я получаю экран аутентификации (уже авторизованный) в твиттере дважды.Появляется -> Принять один раз -> Появляется снова -> Принять снова.

В этот момент мы возвращаемся к приложению, где перестройка начинается должным образом (последующая отладка).Теперь, если я не перезапущу Callback, я получаю сбой, потому что это null.Обратный вызов создается в первый раз и во второй раз с помощью:

        TwitterConfig config = new TwitterConfig.Builder(getActivity())
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_consumer_key), getResources().getString(R.string.twitter_consumer_secret)))
                .debug(true)
                .build();
        Twitter.initialize(config);

        mTwitterAuthClient = new TwitterAuthClient();
        mTwitterAuthClient.authorize(getActivity(), new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                Timber.d("Twitter Login Successful.");
                long authId = result.data.getUserId();
                doRegistration(String.valueOf(authId));
            }

            @Override
            public void failure(TwitterException exception) {
                Timber.d("Twitter Login Failure!");
                clearLoginSessions();
            }
        });

При вышеупомянутом вызове во второй раз приложение продолжает работу правильно вплоть до onActivityResult и затем вводит обратный вызов.Однако в новом обратном вызове this все равно null.Это похоже на то, как обратный вызов возвращается к уничтоженному фрагменту.

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

Я не знаю, какподойти к этому.Любая помощь очень ценится.

...