passando l'obj googleappogliente da un'attività all'altra
-
21-12-2019 - |
Domanda
Voglio essere in grado di aggiornare il mio punteggio per la mia classifica in un'attività diversa diversa da quella che crea l'obj googleappiclient (l'attività principale).
Qual è il modo migliore per farlo?
Sta rendendo l'OBJ Palable il modo corretto?Se è così come puoi farlo se la classe fa parte di una libreria.
Puoi fare la statica dell'obj?È sicuro?
Qualche consiglio su come raggiungere questo sarebbe fantastico.
Soluzione 2
OK Ho pensato che avrei risposto alla mia domanda in quanto ho trovato un metodo che attualmente si adatta a me. Un sacco di questo è proveniente da un'altra domanda risposta trovata qui ! .
Questo metodo utilizza il BasegameUtil, quindi andava dalla risposta di Lee dal link che posso semplicemente avere entrambe le mie attività estendono la basegameattività e aggiungere i metodi richiesti.
Io creando quindi una nuova istanza di Googleappiclient nella mia seconda attività e quindi ottieni il client API come questo:
mGoogleApiClient = getApiClient();
.
Posso passare questo intorno alla mia seconda attività e chiamare i metodi come desidero.
AS Lee afferma nella sua risposta, è possibile avere più istanze del client di Google API e non sarà ancora chiesto di accedere per ciascuno di essi in quanto sai che sei già effettuato.
Altri suggerimenti
È possibile utilizzare la classe di applicazione, una classe di modello Singleton orientata Android e potrebbe essere la tua classe base per le tue chiamate apiclienti.
Ecco un link a API Documentazione, e quisono alcuni Esempi e argomenti Perché usare Applicazione su Singleton .
Il mio vero test è: 1. Non può superare un googleappiciente come oggetto a un altro servizio o attività, utilizzandolo come un parametro intento. 2. Considerare la classe Singleton lo risolve come di seguito: + Passaggio 1: crea la classe Singleton che include oggetto googleappiclient come membro dei dati.Per favore, fai questo:
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;
}
}
.
- .
-
Step 2: Nella classe di attività principale Inizializza un oggetto googleappelliente quindi chiamare GetInstance con mgoogleappiclient come parametro di classe base singleton.
-
Step 3: In un altro servizio / attività che si desidera passare l'oggetto googleappiclient, basta chiamare GetInstance (NULL) di Singleton BaseClass, e chiamare Get_Googleappiclient per ottenere l'oggetto googleappogliente desiderato.
Se hai qualche problema, contattami Thienpham2008@gmail.com.
Se è necessario essere costantemente connessi al googleappiclient, probabilmente creerei una classe di singleton per gestire le chiamate googleappiclienti ( http://en.wikipedia.org/wiki/singleton_pattern ) o effettuare un servizio di fondo che eseguirebbe per l'intera app Lifecycle ( https://developer.android.com/training/best-background.html ).
Dalla documentazione dello sviluppatore :
.googleappiclient viene utilizzato con una varietà di metodi statici. Un po 'di Questi metodi richiedono che Googleappiclient sia connesso, alcuni la coda sulle chiamate prima che googleappiclient sia collegato; Controlla la specifica. Documentazione API per determinare se è necessario essere collegati.
Se non è necessario inviare i dati immediatamente Googleappiclient sta per fare la fila dei dati da inviare per te e semplicemente inviarlo nell'attività primaria.