Android: acceder a datos globales a través de una instancia reemplazable -- java campo con android camp codereview Relacionados El problema

Android: accessing global data through replaceable instance


1
vote

problema

Español

Tengo que acceder a los datos globales compartidos entre actividades en la aplicación de Android.

He simplificado DataProvider Clase para contener solo un campo - 9988776655544336 Para que mi pregunta sea más clara, pero en realidad es una clase mucho compleja.

Hay desviación del patrón global de Singleton aquí en sentido, ese 99887766555544337 se puede reemplazar en ciertos puntos con un nuevo conjunto de datos en LoadDataActivity . Las actividades que tienen una versión antigua de los datos pueden conservar la versión anterior hasta que se reinicien, en cuyo caso solo agarrarán el nuevo 9988776665544339 .

La principal sostenibilidad es responsable de cargar los datos iniciales en Global equals0 .

dataprovider.class

  equals1  

mainactividad

  equals2  

showdataactivity

  equals3  

loaddataactivity

  equals4  

puede mejorarse por encima del código y cómo?

Original en ingles

I have to access global data shared between activities in Android application.

I have simplified DataProvider class to contain only one field - options in order to make my question clearer, but in reality it is much complex class.

There is deviation from global singleton pattern here in sense, that global instance can be replaced at certain point with new set of data in LoadDataActivity. Activities that have older version of data can retain older version until they are restarted, in which case they will just grab new instance.

MainActivity is responsible for loading initial data into global DataProvider instance.

DataProvider.class

public class DataProvider {     // current global instance     public static DataProvider instance = new DataProvider();      // data     private Map<String, String> options = new HashMap<String, String>();      public Map<String, String> getOptions()     {         return options;     }      public void load(String source)     {         options.clear();         options.put(source, source);         // data loading     } } 

MainActivity

public class MainActivity extends Activity {     private DataProvider data;      @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         data = DataProvider.instance;         data.load("main");         Map<String, String> options = data.getOptions();         // read data from options and perform activity initialization     } } 

ShowDataActivity

public class ShowDataActivity extends Activity {     private DataProvider data;      @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_show);         data = DataProvider.instance;         Map<String, String> options = data.getOptions();         // read data from options and perform activity initialization     } } 

LoadDataActivity

public class LoadDataActivity extends Activity {     @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_load);     }      public void loadData(String source)     {         DataProvider data = new DataProvider();         data.load(source);         // replace global data instance with new set of data         DataProvider.instance = data;     } } 

Can above code be improved and how?

     

Lista de respuestas


Relacionados problema

41  ¿Es mi código un singleton 'seguro'?  ( Is my code a safe singleton ) 
Me preguntaba si mi código producirá un verdadero Singleton. Estoy creando una aplicación de Android, y todas las actividades deben acceder a mi API a través ...

1  Clase HTTPRequest usando AsintsTask para la aplicación Android  ( Httprequest class using asynctask for android application ) 
Estoy usando la siguiente clase para recuperar una respuesta HTTP, que contiene datos para mi aplicación de Android. Todo funciona bien, pero hay un problema ...

0  Quiero obtener días laborables para los juegos de tiempo común desde el siguiente hashmap  ( I want to get weekdays for common time sets from the following hashmap ) 
Tengo el siguiente HashMap : HashMap<String, String> days = new HashMap<String, String>(){ days.put("MON", "9-5"); days.put("TUE", "9-4"...

1  Aplicación de Android que hace ciertas acciones en respuesta al estado de alternativa  ( Android app that makes certain actions in response to the state of toggles ) 
He escrito una aplicación de Android mediante un estudio Android que, cuando el interruptor principal está habilitado, al presionar otros interruptores o pres...

8  Widget de pantalla de inicio para mostrar números aleatorios  ( Home screen widget to display random numbers ) 
He creado un pequeño widget de inicio de sesión que muestra números aleatorios. Adjunto es el código. Por favor, hágamelo saber si el enfoque es bueno. htt...

2  Script de grado de Android en Proyecto Multi-Módulo  ( Android gradle script in multi module project ) 
Tengo un proyecto de Android Multi-Module Construido por Gradle con el nuevo Android-Plugin 0.10 +. Todos los módulos se configuran principalmente desde el ...

4  FindViewByID - en clase separada  ( Findviewbyid in separate class ) 
Soy nuevo en Android y quería crear una clase que cargaría un anuncio dentro del diseño actual. Todos los diseños tienen un 9988777665544336 de mi princip...

2  Función para girar al cojinete solicitado  ( Function to turn to requested bearing ) 
He estado escribiendo una función: float turnToRequestedHeading(float initialHeading, float requiredHeading, float turnRate) Sigo pensando que debe hab...

2  Cálculo del riesgo de los hombres de obtener la enfermedad coronaria  ( Calculating mens risk of getting coronary heart disease ) 
Me gustaría que alguien aquí me ayude a limpiar mi código. Se trata de calcular el riesgo de los hombres de obtener una enfermedad cardíaca coronaria. Aquí e...

2  Android Utils Class  ( Android utils class ) 
He creado una clase 99887766555443322 , que consta de progressDialog y AlertDialog : public class Utils { public static ProgressDialog dialog; ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos