La meilleure pratique consiste-t-elle à transmettre le contexte aux cours hors activité?

Donc, ma première application majeure est presque codée et je réalise des optimisations sur mon code. L'application fonctionne bien, mais je ne suis pas sûr de ma façon de transmettre le contexte à d'autres classes. Je ne veux pas faire le mauvais chemin. Je suis tombé sur des articles et des questions ici dans Stackoverflow sur les contextes et qui est le bon moyen de le transmettre aux classes hors activité. Je lis aussi la documentation, mais en tant que Finn, la technologie compliquée est encore plus difficile à comprendre.

Donc, une question simple. Est-ce que ma façon de transmettre le contexte de mon activité principale à d'autres classes (assistant) est correcte? Sinon, où puis-je lire plus sur une meilleure pratique sur ces situations.

  • Application: showAsAction vs android: showAsAction
  • Android zxing - l'aperçu de la caméra portrait / la vue de surface est étirée / déformée
  • Erreur lors du démarrage de l'émulateur
  • Comment exécuter une tâche Async à plusieurs reprises après des intervalles de temps fixes
  • API Spotify: INVALID_APP_ID
  • Comment décompresser un grand fichier zip et écrire sur SDCARD en moins de temps
  • Par exemple: 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); } } 

    Est-ce correct? Ce serait bien que quelqu'un puisse fournir un article facile à lire avec des exemples sur ce sujet.

  • Rafraîchir le fragment au rechargement
  • Transmission audio Bluetooth entre les périphériques Android
  • Mesurer la performance en utilisant le test d'instrumentation Android
  • TabLayout manquant après la mise à jour de la bibliothèque de support de conception
  • Quelle est la différence entre EventBus et RxJava?
  • "Les projets de bibliothèques Android ne peuvent pas être lancés"?
  • 2 Solutions collect form web for “La meilleure pratique consiste-t-elle à transmettre le contexte aux cours hors activité?”

    Vous pouvez le faire en utilisant ContextWrapper , comme décrit ici.

    Par exemple:

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

    Et appelez la classe non active comme celle-ci à partir d'une activité

     new MyContextWrapper(this); 

    Vous pouvez également créer une référence d'instance statique à votre MainActivity initialisée dans la méthode onCreate()

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

    Et appeler le contexte comme ceci:

     MainActivity.mMainActivity; 

    Ou écrivez une méthode getInstanceOf() si elle est plus claire et / ou vous préférez utiliser un accessor

     MainActivity.getInstanceOf(); 

    Cette stratégie pourrait vous donner une certaine souplesse si vous décidez plus tard que vous souhaitez appeler une méthode d'instance contenue dans votre activité principale comme suit:

     MainActivity.mMainActivity.myInstanceMethod(); 

    Juste une suggestion. Les critiques sont les bienvenues et encouragées.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.