¿La mejor práctica para pasar Contexto a clases sin actividad?

Por lo tanto, mi primera aplicación principal está casi codificada y estoy haciendo optimizaciones en mi código. La aplicación funciona bien, pero no estoy seguro de mi forma de pasar el contexto a otras clases. No quiero hacerlo de la manera equivocada. Me tropecé con artículos y preguntas aquí en Stackoverflow sobre contextos y que es la manera correcta de pasarlo a clases que no sean de actividad. También leí la documentación, pero ser un finlandés hace que la técnica complicada sea aún más difícil de entender.

Así que, una pregunta simple. ¿Es correcta mi forma de pasar el contexto de mi actividad principal a otras clases (auxiliares)? Si no, ¿dónde puedo leer más sobre mejores prácticas en estas situaciones.

Por ejemplo: MainActivity.java

public class MainActivity extends Activity { @Override protected void onCreate(Bundle sis){ super(sis); new Helper(MyActivity.this).makeMyAppAwesome(); } } 

Helper.java

 public class Helper { Context context; Helper(Context ctx){ this.context = ctx; } public void makeMyAppAwesome(){ makeBaconAndEggsWithMeltedCheese(context); } } 

¿Esta bien? Sería bueno si alguien podría proporcionar un fácil de leer el artículo con ejemplos sobre este tema.

2 Solutions collect form web for “¿La mejor práctica para pasar Contexto a clases sin actividad?”

Puede hacerlo usando ContextWrapper , como se describe aquí.

Por ejemplo:

 public class MyContextWrapper extends ContextWrapper { public MyContextWrapper(Context base) { super(base); } public void makeMyAppAwesome(){ makeBaconAndEggsWithMeltedCheese(this); } } 

Y llamar a la clase de no actividad como esta de una actividad

 new MyContextWrapper(this); 

También podría crear una referencia de instancia estática a su MainActivity inicializada en el método onCreate()

 public class MainActivity extends AppCompatActivity { public static MainActivity mMainActivity; @Override private onCreate(Bundle savedInstanceState){ //... mMainActivity = this; } } 

Y llamar al contexto como este:

 MainActivity.mMainActivity; 

O escriba un método getInstanceOf() si es más claro y / o prefiere usar un accesor

 MainActivity.getInstanceOf(); 

Esta estrategia podría proporcionarle cierta flexibilidad si decide más tarde que desea llamar a un método de instancia contenido en su actividad principal de la siguiente manera:

 MainActivity.mMainActivity.myInstanceMethod(); 

Sólo una sugerencia. La crítica es bienvenida y animada.

  • Intentando despedir una intención de un ContentObserver
  • IsolatedContext vs AndroidTestCase.getContext ()
  • Android Asyntask: Usar referencia débil para el contexto para evitar la rotación del dispositivo de pantalla
  • Contexto de actividad de acabado android
  • ¿Por qué AlertDialog.Builder (Context context) sólo acepta Actividad como parámetro?
  • Cambiar el nombre de un archivo en el almacenamiento interno
  • ¿Cuál es la diferencia entre esto, getContext () y getActivity ()?
  • Android Context sin estar en una actividad? ¿Y otra programación sin actividad?
  • Obtención del contexto de la actividad en un android de clase de no actividad
  • obtiene el objeto Activity mientras está en el contexto View
  • ¿Por qué AndroidTestCase.getContext (). GetApplicationContext () devuelve null?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.