2012-07-08 18 views
5

Estoy perplejo por qué no puedo acceder a mis variables globales desde mi servicio. Puedo acceder a ellos desde otras actividades apenas muy bien ....La variable global de Android no funciona en el Servicio

clase mundial var:

public class Global extends Application { 
private static final String TAG = "Global Class"; 

int test;  

public int getTest() 
{ 
    return test; 
} 

Actividad Principal utilizo este código de prueba:

Global appState = ((Global)getApplication()); //Context()); 
appState.setTest(555); 
Log.e("SETTEST",new Integer(appState.getTest()).toString()); 

El resultado es 555

Otra actividad Uso el mismo código:

Global appState = ((Global)getApplication()); //Context()); 
Log.e("SETTEST",new Integer(appState.getTest()).toString()); 

El resultado es 555

, finalmente, en mi servicio, yo uso el mismo código que el anterior:

Global appState = ((Global)getApplication()); //Context()); 
Log.e("SETTEST",new Integer(appState.getTest()).toString()); 

y recibo grande, gordo 0 atrás.

Por favor ayuda. He pasado 3 horas en esto hasta ahora. He intentado usar getApplication y getApplicationContext

Además, las miradas se manifiestan como este:

... 
<application android:icon="@drawable/signal" android:label="@string/app_ name" android:name="<absolute path>.util.Global"> 


<service 
    android:name=".util.MyService" 
    android:process=":MyService" 
    android:icon="@drawable/airplane" 
    android:label="@string/service_name" 
    > 
</service> 

** Acabo de intentar utilizar una clase Singleton así de acuerdo a este mensaje. mismos problemas que el anterior:

Android - Global variables?

+0

Trate de pasarlos usando las Preferencias Compartidas ... Espero que funcione. –

+0

¿Su servicio se ejecuta de manera local o remota? Publique el manifiesto para su servicio –

+0

este fue solo un código de prueba simple. estoy pasando una gran variedad de objetos personalizados ... no estoy seguro de si prefs compartidos es el camino a seguir, corrígeme si estoy equivocado –

Respuesta

16

Su servicio se está ejecutando de forma remota porque tienes esta:

android:process=":MyService" 

en la definición de manifiesto por el servicio.

Esto significa que se está ejecutando un proceso completamente separado. No puede compartir variables globales usando variables estáticas de esa manera.

Si no necesita que su servicio se ejecute en un proceso separado, simplemente elimine la línea "android: process" y estará bien.

+0

yup! eso funciono. –

+0

¡Muchas gracias! –

+0

deberían haber advertido a la gente, o me perdí algo. – guness