Pregunta

Quiero poder actualizar mi puntaje para mi tabla de clasificación en una actividad diferente que no sea la que crea el obj googleapiclient (la actividad principal).

¿Cuál es la mejor manera de hacer esto?

está haciendo que el obj parcelable sea la forma correcta?Si es así, ¿cómo puede hacerlo si la clase es parte de una biblioteca?

¿Puedes hacer que el Obj estático?¿Es seguro?

Cualquier consejo sobre cómo lograr esto sería genial.

¿Fue útil?

Solución 2

OK, pensé que respondería a mi propia pregunta, ya que he encontrado un método que actualmente me conviene. Un montón de esto ha venido de otra pregunta contestada aquí !

Este método usa el MESTGAMEUTIL, así que va de la respuesta de Lee desde el enlace, puedo tener que mis actividades extienden la base de base de base y agregan los métodos requeridos.

Luego, creo una nueva instancia del googleapiclient en mi segunda actividad y luego obtenga 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 múltiples instancias del cliente API de Google y aún no se le pedirá que inicie sesión para cada uno de ellos, ya que sabe que ya está iniciado.

Otros consejos

Puede usar la clase de aplicación, una clase de patrón de Singleton orientada a Android y podría ser su clase base para sus llamadas de apiclient.

Aquí hay un enlace a la Documentación de API , y aquíson algunos ejemplos , así como argumentos por qué usar Aplicación sobre Singleton .

Mi prueba real es: 1. No puede pasar un googleapiciente como un objeto a otro servicio o actividad, usándolo como un parámetro de intención. 2. Deje que use la clase Singleton lo resuelva a continuación: + Paso 1: Haz que la clase de Singleton incluya el objeto Googleaplient como miembro de datos.Por favor, hágalo así:

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 Googleaplient y luego llame a GetInstance con Mgoogleapiclient como parámetro de la clase base de Singleton.

  • Paso 3: En otro servicio / actividad que desea pasar el objeto Googleaplient, solo llame a GetInstance (NULL) de Singleton Basellass, y llame a get_googleapiclient para obtener el objeto googleapiclient deseado.

Si tiene algún problema, comuníquese conmigo thienpham2008@gmail.com.

Si necesita estar constantemente conectado con el Googleapliclient, entonces probablemente haré una clase de Singleton para manejar las llamadas GoogleapiClient ( http://en.wikipedia.org/wiki/singleton_pattern ) o haga un servicio de fondo que se ejecute para todo el ciclo de vida de la aplicación ( https://developer.android.com/training/best-background.html ).

de la documentación del desarrollador :

Googleapiclient se utiliza con una variedad de métodos estáticos. Algunos de Estos métodos requieren que se conecte googleapiclient, algunos Llamadas de cola antes de conectar googleapiclient; Compruebe lo específico Documentación API para determinar si necesita estar conectado.

Si no necesita enviar los datos inmediatamente Googleapiclient se colocará los datos que deben enviarse para usted y simplemente enviarlo en la actividad principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top