Создание GoogleApiClient для нескольких действий

Я занимаюсь разработкой приложения для Android с Google+ API. У меня есть несколько действий, для каждого из которых требуется один экземпляр GoogleApiClient.

Как я понимаю из этого поста, можно вызывать один и тот же экземпляр GoogleApiClient для каждого действия. У меня вопрос, как мы создаем копии GoogleApiClient специально?

Должны ли мы построить его снова с помощью.addApi(), .addscope() и снова реализовать метод onConnected и метод OnConnectedFailedListener? Потому что это кажется повторяющимся и неэффективным. И разве реализация этих методов не переопределит те же методы из других действий?

2 ответа

Это не дорого, чтобы создать несколько экземпляров GoogleApiClient, На самом деле это поможет с эффективностью, если вы используете более одного API. Будут накапливаться только те услуги, которые вы специально запрашиваете. Таким образом, если одно действие использует "Плюс", а другое - "Дисковод", сервис "Плюс" не нужно накапливать, когда вы работаете с "Диском".

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

Если вы действительно не хотите этого делать, используйте контекст приложения вместо действия или фрагмента, чтобы создать GoogleApiClient и держите ссылку на него в объекте Application.

У меня только что была такая же дилемма. Чтобы обойти это, я использовал BaseGameUtil... не уверен, что вы используете это, но если вы, то это просто, вы можете просто заставить каждое действие расширять BaseGameActivity, добавлять необходимые методы, а затем создавать объект GoogleApiClient obj и getApiClient, который затем дать вам возможность использовать GoogleApiClient во втором вашем занятии.

mGoogleApiClient = getApiClient();

Если вы не используете BaseGameUtil, то я думаю, что вам придется создавать его так, как вы делали выше, что является болью, по крайней мере, basegameutil сделает это за вас, плюс вы всегда можете изменить то, что в BGU, так как они являются скорее примерами, чем библиотеками.

Надеюсь это поможет.

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