2016-07-31 1 views
0

Je construis un menu à partir duquel l'utilisateur peut sélectionner des éléments. Ils peuvent modifier leurs sélections chaque fois que nécessaire. Le singleton serait une classe contenant la liste de tous les éléments sélectionnables. Chaque fois que de nouvelles activités sont ouvertes, le singleton aurait l'état correct de tous les éléments.Est-il nécessaire de déclarer Singleton pour accéder à un seul objet dans toutes mes activités?

La raison pour laquelle je pose cette question est parce que l'implémentation de Serializable crée une nouvelle instance (quoique presque identique) de l'élément.

+0

Je n'ai pas répondu à la question. Le but de Singleton est de contrôler la création d'objets, en limitant le nombre d'obejcts à un seul. –

+0

Vous pouvez utiliser singleton et une autre option est de le créer dans votre activité principale et de définir BroadcaseReceiver qui sera déclenché chaque fois qu'une sélection est effectuée sur l'une des autres activités. –

Répondre

0

Oui, vous pouvez utiliser un singleton pour cela. Ce serait quelque chose comme:

public class MenuData { 

    private static MenuData instance; 

    private boolean isItemASelected; 

    public static MenuData getInstance() { 
     if (instance == null) { 
      instance = new MenuData(); 
     } 
     return instance; 
    } 

    public boolean isItemASelected() { 
     return isItemASelected; 
    } 

    public void setItemASelected(boolean itemASelected) { 
     isItemASelected = itemASelected; 
    } 

} 

Cependant, je ne le recommanderais pas. Ces données ne seront disponibles que tant que votre application est en mémoire. Dès que votre application est tuée par Android toutes les variables seront effacées et l'état aura été perdu.

Si vos éléments de menu sont constants, je vous recommande d'utiliser SharedPreferences pour stocker l'état. S'ils sont dynamiques, utilisez la base de données SQL. De cette façon, les options sont conservées même si votre application est tuée.