2011-11-24 1 views
4

Récemment, j'ai découvert un extrait qui utilise la technique suivante pour accéder statiquement de n'importe où au contexte de l'application. Il a l'air cool mais est vraiment une bonne option ou est-ce une mauvaise technologie pour une raison quelconque?Technique pour obtenir le ApplicationContext n'importe où

public class MyApp extends Application { 
    private static MyApp instance; 

    public static MyApp getInstance() { 
     return instance; 
    } 

    public static Context getContext(){ 
     return instance.getApplicationContext(); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instance = this; 
    } 
} 

Répondre

5

À moins que vous exposer simplement une méthode publique qui prend un Context comme argument à l'intérieur de vos classes qui nécessitent Context (et passent dans de votre Activity, etc.), c'est la façon de le faire.

4

Cela fonctionnera certainement. Faites attention comme avec n'importe quel singleton que vous n'en abusez pas. Lisez la réponse à this question en expliquant pourquoi ApplicationContext est rarement (bien que parfois) le bon contexte à utiliser. De plus, avoir ApplicationContext disponible partout vous permet d'être plus négligé dans la façon dont vous organisez vos classes, car vous n'aurez pas besoin de réfléchir aux fonctionnalités qui ont vraiment besoin de l'ApplicationContext et de savoir si vous devez le factoriser, etc. peut-être en fonction de votre degré de discipline. Je suis toujours assez méfiant des singletons bien que othernotable people ne suis pas d'accord, mais je pense qu'il est encore largement débattu si les singletons sont un motif ou un anti-pattern. Si vous singleton Google et anti-pattern, vous trouverez des articles comme this qui font d'assez bons points à mon avis.

Questions connexes