2011-12-19 13 views
5

Tengo un problema relacionado con una variable estática que estoy usando en todo mi proyecto (contiene algunos campos de un archivo). La variable pierde su valor en algunos casos, no siempre. He leído sobre el ciclo de vida de una variable estática, que pierde el valor en 3 casos:La variable estática pierde el valor

1) La clase está descargada.

2) JVM se apaga.

3) El proceso muere.

Tengo una pregunta: ¿no es suficiente para volver a escribir las actividades en Reanudar y analizar el archivo nuevamente y alimentar la variable estática nuevamente si es nulo?

+2

Publique el código correspondiente que haya probado. – Lion

+0

gracias por las respuestas, pero con la aplicación parece que pierdo mis valores, cuando la aplicación va en segundo plano ... –

Respuesta

2

Si realmente debe usar static/globals, colóquelos en su clase personalizada que se extiende Application. De esta manera:

public class FooApplication extends Application { 
    protected Bar myBar; 

    public Bar getBar() { return myBar; } 
    public void setBar(Bar bar) { myBar = bar; } 
    ... 
} 

Declare que va a utilizar una clase de aplicación personalizada con su manifiesto.

<application 
    android:icon="@drawable/ic_launcher_noteit1" 
    android:label="@string/app_name" 
    android:theme="@style/App_Theme" 
    android:name="FooApplication" 
    android:debuggable="true"> 

Ahora puede acceder a su objeto de aplicación de cualquier actividad utilizando (FooApplication) getApplication(). Tenga en cuenta que este no es el método recomendado. El método recomendado es usar un patrón singleton.

Si el análisis del archivo es una operación costosa, es posible que no desee analizarlo en cada onResume. En su lugar, es posible que desee considerar el uso de onRetainNonConfigurationInstance()

1

Quería asegurarme, en primer lugar, de que usted no reiniciara esa variable por su cuenta. Para esto es posible que desee crear, digamos, getMyVariable() y setMyVariable() funciones, poner algunos logging en ellos y usarlos en lugar de acceder a la variable directamente.

Cuestiones relacionadas