Domanda

Ho un Singleton che memorizza alcune informazioni prudente circa l'utente della mia candidatura. Al momento, memorizza login dell'utente e la posizione dell'utente.

1) La posizione si trova attraverso un servizio. Al momento, il servizio fa riferimento il mio Singleton direttamente per farcire la longitudine e la latitudine in esso. Vorrei utilizzare un BroadcastReceiver per inviare una trasmissione che le sente Singleton e utilizzi per aggiornare i valori, invece.

Tuttavia, per registrare il BroadcastReceiver, ho bisogno di un contesto nel mio Singleton. Qual è il modo più destro per ottenere quello che sto volendo. BroadcastReceiver è forse non l'oggetto appropriato?

2) Inoltre, quali problemi sto guardando con l'utilizzo di un singleton? Si considera che Android sarà eventualmente recuperare questa memoria in un dato momento (che ovviamente male); così come posso evitare questo? Sarebbe passando nel contesto dell'applicazione e riporlo in una variabile membro contrasta questo?

La documentazione Android: "Ma, il ciclo di vita di una statica non è ben sotto il vostro controllo, in modo da rispettare il modello del ciclo di vita, la classe di applicazione dovrebbe avviare e abbattere questi statica oggetti nel onCreate () e onTerminate () metodi della classe Application," ma non sono del tutto sicuro di come ottenere questo risultato.

È stato utile?

Soluzione

  

Tuttavia, per registrare il BroadcastReceiver, ho bisogno di un contesto nel mio Singleton. Quale è   modo più destro per ottenere quello che sto volendo. È BroadcastReceiver forse non appropriato> oggetto?

La "via più destro" è quello di non fare quello che stai facendo. Si prega di registrare solo un BroadcastReceiver da un Activity, Service, o forse un Application. È deve unregister questo BroadcastReceiver quando il Activity, Service o Application è distrutta.

  

I supporre che Android sarà eventualmente recuperare questa memoria in un dato momento (che avrebbe   ovviamente cattivo); così come posso evitare questo?

Non lo sai. riserve Android il diritto di sospendere il processo in qualsiasi momento (ad esempio, per recuperare la memoria). killer Task su Android 2.1 e precedenti termineranno il processo in qualsiasi momento. Una volta che tutti i componenti dell'applicazione vengono distrutti, Android può riciclare il vostro processo in qualsiasi momento, sgombrare il tuo mucchio, allo stesso tempo. E così via.

Solo mettere le cose in memoria che non ti dispiace perdere.

La cosa migliore è pensare alla vostra "applicazione", come un cesto di componenti loosely-coupled, non come un'entità monolitica.

  

Sarebbe passando nel contesto dell'applicazione e riporlo in un contrasta variabile membro   questo?

No.

  

La documentazione Android: "Ma, il ciclo di vita di una statica non è ben sotto il vostro   controllo; in modo di rispettare il modello del ciclo di vita, la classe di applicazione dovrebbe avviare e   abbattere questi oggetti statici in onCreate () e onTerminate () metodi   Classe di applicazione," ma non sono del tutto sicuro di come ottenere questo risultato.

Crea una sottoclasse di Application e indicare nel manifesto che Android dovrebbe usarlo, tramite l'attributo android:name sull'elemento <application>.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top