¿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.

  • Recuperar el contexto de llamada en un BroadcastReceiver ()
  • ¿Cómo pasar el contexto de la actividad a la actividad?
  • Uso del contexto de la aplicación en todas partes?
  • Android: ProgressDialog no se muestra
  • ¿Cómo obtiene un objeto Drawable de un id de recurso en el paquete android?
  • Por favor, explícame Clase de contexto en Android
  • La mejor manera de obtener un contexto de aplicación en un método estático en Android
  • ¿Cómo puedo acceder a la UI de la actividad de mi clase?
  • ¿Cuál es la diferencia entre la actividad y el contexto?
  • Utilizar getResources () en una clase que no sea de actividad
  • OnBind () en servicio siempre devuelve Falso - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.