10

Tutti i tutorial che ho trovato su Android In-App-Billing V3 presumono che tu abbia un'unica attività che gestisce tutto ciò che riguarda la fatturazione. Nel mio caso ci sono più attività che avranno bisogno di accedere alla fatturazione. Come gestirò una cosa del genere con eleganza?Disaccoppiamento della fatturazione in-app dall'attività

Un problema di esempio in cui sono incappato: Quando si lavora con le classi di helper di fatturazione di Google si passa sempre l'attività corrente come parametro. Chiamate successive (ad esempio onActivityResult) vengono chiamate su quell'attività. Ma cosa succede se l'attività attiva cambia continuamente? Devo chiudere e re-inizializzare la fatturazione tutto il tempo?

risposta

4

Ma cosa succede se l'attività attiva cambia continuamente? Devo arrestare e inizializzare nuovamente la fatturazione?

Non c'è niente di male. La connessione a un servizio è molto veloce. La cosa più importante è essere in grado di gestire la richiamata onActivityResult() quando l'attività ricomincia.

Come gestirlo con eleganza?

Non sono sicuro di quale tipo di applicazione si scrive. Se si tratta di un gioco, allora molto probabilmente consiste in una singola attività e comunque non ci sono problemi. Se è un altro tipo di applicazione con più attività, a mio parere, è una buona idea avere una singola attività, in cui l'utente è in grado di vedere tutti i prodotti in-app (acquistati e da acquistare). È come un'attività "negozio interno". Questa attività può connettersi al servizio di fatturazione. Altre attività dovrebbero essere inviate al "negozio interno" dove l'utente può leggere di più su un prodotto in-app e decidere di acquistarlo. Lo trovo molto conveniente.

Un altro approccio potrebbe essere implementare la logica di fatturazione in un frammento che può essere riutilizzato in ogni attività. Hai solo bisogno di sovrascrivere onActivityResult() e inoltrare il risultato a quel Frammento. Questo è il modo in cui l'ho implementato nella mia app.

Spero che questo aiuti.

+0

Ottime informazioni. Ho una domanda, che ne dici di accedere al codice InAppBilling da un'altra attività? Non riesco a farlo funzionare –

+0

Potresti pubblicare il tuo frammento di esempio con la fatturazione per favore? Grazie. – dragoon

+0

Veloce per connettersi a un servizio, ok, ma per quanto riguarda l'impatto sul dispositivo? Coinvolge la comunicazione con un server? –

0

Pensa un po 'al di fuori della casella di esempio. Non è legato solo al tuo problema, ma è generale.

Vorrei utilizzare un sistema di notifica, perché hai 1 editore e molti ascoltatori necessari (il tuo caso 2). Uno, il metodo più brutto può essere (ma più veloce di scrivere):

  1. fare un'attività falso (anche invisibile, a prescindere)
  2. copia-incollare il codice di esempi che vi lavora
  3. incidere un po 'che lavorare codice e aggiungere gli ascoltatori, che prende parametri come l'attività vera e propria
  4. notificare quando necessario le istanze, quando necessario

5th up-voto, se aiutato o gradito :)

+0

Hm, creare un'attività fittizia non è così facile. L'unico modo per creare un'attività è avviarlo tramite il ciclo di vita di Android, giusto? In tal caso l'attività non sarebbe più falsa, ma in realtà sullo schermo ;-) – Boris

+0

quanto è difficile per te rendere invisibile un'attività? –

+0

Penso che sconfigga lo scopo di disaccoppiare la logica di business dalla vista (attività). – Boris

Problemi correlati