Код API Google Play Services за пределами активности?

При внедрении Google Play Services Api в приложение. Во всех документах и ​​учебниках есть весь код, вызываемый из действия.

Я хотел бы разбить его на более мелкие классы, которые я называю внутри этой деятельности.

Это плохая практика? Если нет, как я могу заставить его работать в классе без активности?

Правильный способ участия вашего кода в жизненном цикле активности без вызовов метода hardcoding – использовать фрагменты.

В GoogleApiClient у нас есть метод enableAutoManage() в GoogleApiClient.Builder, который позволяет использовать код службы Google Play для большей части управления для вас. Это можно использовать, если ваше приложение поддерживает единую учетную запись Google с помощью GoogleApiClient за один раз. Мы планируем опубликовать образец очень скоро, показывая эту функциональность.

Вы должны знать, что есть ошибка, которую мы вскоре исправим в функциональности автозапуска, которая дважды предложит пользователям приложения для определения OAuth, если они отклонят это в первый раз. Если вы это сделаете, исправление будет бесплатным, если вы заберете новую клиентскую библиотеку сервисов Google Play.

Хотел бы разбить его на более мелкие классы, которые я вместо этого призываю к активности.

Вы имеете в виду фрагменты (которые вы должны использовать)? Или другой тип класса?

Внутри класса, который расширяет Fragment , просто вызывайте getActivity() или getSupportActivity() для использования кода, который требует Context , или кода, который должен вызываться из Activity .

Если это код, который не расширяет фрагмент, вам нужно добавить внутри него переменную Context . Пример конструктора (args, представляющий любой другой объект, который может потребоваться передать):

public MyClass(Object args, Context context) { ... mContext = context; }

Итак, когда вы создаете свой объект в Activity, вы будете писать:

MyClass foo = new MyClass(args, this);

Затем, когда вы хотите вызвать код, специфичный для конкретной mContext.activitySpecificCode(); , вы вызываете: mContext.activitySpecificCode();

Если эти классы сохраняются при создании нового действия, вам придется заменить старый контекст. Объект Context действителен только для конкретного экземпляра конкретной Activity, из которого он был взят.

Intereting Posts
Как установить предыдущую библиотеку поддержки Android (версия 8) Интеграция нескольких мобильных рекламных сетей с помощью Admob Mediation Android: Как вы передаете обратный вызов активности? Обработка платежей через PayPal / кредитную карту Как показать предложения AutoCompleteTextView в альбомной ориентации Получение работы буфера OpenGL-ES-трафарета Android Studio не может разрешать сторонние зависимости Android Studio 3.0 Canary 1 Ошибка GRPC SecurityException: не разрешено запускать сервис Intent {act = com.google.android.c2dm.intent.REGISTER pkg = com.google.android.gms (есть дополнительные функции)} Обработчики аннотаций генерировали ресурсы, не упакованные в APK Выбор цвета выбора позиции строки Recyclerview Android.view.InflateException ошибка раздувания класса DataChannel.state () всегда возвращает CONNECTING webRTC Android Как остановить чрезмерное создание объектов на телефонах Samsung? Создайте PDU для Android, который работает с SmsMessage.createFromPdu () (GSM 3gpp)