Pasando el objeto GoogleApiClient de una actividad a otra
Quiero ser capaz de actualizar mi puntuación para mi clasificación en una actividad diferente a la que crea el obj GoogleApiClient (la actividad principal).
¿Cuál es la mejor manera de hacer esto?
- Uso de los nuevos servicios de Google Play
- GoogleSignatureVerifier firma mensaje no válido (google play services 9.0.0)
- ¿Por qué Google recomienda copiar bibliotecas en tu árbol?
- Error: No se pudo resolver: com.google.android.gms: play-services-measurement: 9.2.0
- Esta aplicación no se ejecutará a menos que actualice el error de Google Play Services
¿Está haciendo el obj parcelable de la manera correcta? Si es así, ¿cómo puede hacerlo si la clase forma parte de una biblioteca?
¿Puedes hacer el obj estático? ¿es seguro?
Cualquier consejo sobre cómo lograr esto sería genial.
- No se puede resolver el símbolo: FusedLocationProviderClient. Versión de Google Play Services utilizada 11.0.1
- Cómo registrar usuarios con la cuenta de Google en la aplicación Android
- No se puede obtener un cumpleaños privado de la cuenta de Google Plus aunque se solicita explícitamente
- Actualizar a Google Play Services: Error de la versión Error al resolver: com.google.android.gms: play-services-measurement: 9.0.0
- Cómo corregir la excepción no captada GMS .NoClassDefFoundError: com.google.android.gms.internal.zzno
- Android: ¿Es necesario respetar isLimitAdTrackingEnabled ()?
- Cómo evitar TagManager "IllegalStateException: Resultados ya se han establecido"
- Android Studio 1.5 - Cómo mostrar javadoc para los servicios de Google Play en AS
Podrías usar la clase Application, una clase de patrón Singleton orientada a Android y podría ser tu clase base para tus llamadas de ApiClient.
Aquí hay un enlace a la documentación de la API , y aquí hay algunos ejemplos , así como los argumentos por qué utilizar la aplicación sobre Singleton .
Ok, pensé que iba a responder a mi propia pregunta, ya que he encontrado un método que actualmente me conviene. ¡Mucho de esto ha venido de otra pregunta contestada encontrada aquí !
Este método utiliza el basegameutil así que va de la respuesta de Lee del acoplamiento puedo apenas tener mis dos actividades extender el BaseGameActivity y agregar los métodos requeridos.
A continuación, crear una nueva instancia de la GoogleApiClient en mi segunda actividad y luego obtener el cliente api como este:
mGoogleApiClient = getApiClient();
Ahora puedo pasar esto alrededor de mi segunda actividad y llamar a los métodos como deseo.
Como afirma Lee en su respuesta, puede tener varias instancias del cliente google api y todavía no se le pedirá que inicie sesión para cada uno de ellos, ya que sabe que ya está iniciado sesión.
Mi prueba real es: 1. No se puede pasar un GoogleApiClient como un objeto a otro servicio o actividad, al usarlo como un parámetro de intención. 2. Deje que la clase Singleton lo solucione como se muestra a continuación: + Paso 1: Haga una clase Singleton que incluya el objeto GoogleApiClient como miembro de datos. Por favor, haga esto:
import com.google.android.gms.common.api.GoogleApiClient; public class MyGoogleApiClient_Singleton { private static final String TAG = "MyGoogleApiClient_Singleton"; private static MyGoogleApiClient_Singleton instance = null; private static GoogleApiClient mGoogleApiClient = null; protected MyGoogleApiClient_Singleton() { } public static MyGoogleApiClient_Singleton getInstance(GoogleApiClient aGoogleApiClient) { if(instance == null) { instance = new MyGoogleApiClient_Singleton(); if (mGoogleApiClient == null) mGoogleApiClient = aGoogleApiClient; } return instance; } public GoogleApiClient get_GoogleApiClient(){ return mGoogleApiClient; } }
-
Paso 2: En la clase de actividad principal, inicialice un objeto GoogleApiClient y luego llame a getInstance con mGoogleApiClient como parámetro de la clase base Singleton.
-
Paso 3: En otro servicio / actividad a la que desea pasar el objeto GoogleApiClient, llame a getInstance (null) de Singleton baseclass y llame a get_GoogleApiClient para obtener el objeto GoogleApiClient deseado.
Si tienes algún problema, póngase en contacto conmigo [email protected].
Si necesita estar constantemente conectado a GoogleApiClient, entonces probablemente haría una clase singleton para manejar las llamadas de GoogleApiClient ( http://en.wikipedia.org/wiki/Singleton_pattern ) o hacer un servicio de fondo que se ejecutaría durante todo el ciclo de vida de la aplicación ( https://developer.android.com/training/best-background.html ).
En la documentación del desarrollador :
GoogleApiClient se utiliza con una variedad de métodos estáticos. Algunos de estos métodos requieren que GoogleApiClient esté conectado, algunos pondrán en cola las llamadas antes de que GoogleApiClient esté conectado; Consulte la documentación específica de la API para determinar si necesita estar conectado.
Si no necesita enviar los datos inmediatamente, GoogleApiClient va a poner en cola los datos que se enviarán para usted y simplemente enviarlos en la actividad principal.
- Información de la aplicación del sistema Android
- ¿Puede Universal loader de imágenes para Android trabajar con imágenes de sqlite db?