Создание экземпляров объектов класса Singleton в Android

Может кто-нибудь сказать мне, где создать экземпляр объекта класса Singleton, как ArrayList?

Я пытаюсь создать экземпляр в onCreate() метод,но не создан. Кто-нибудь может сказать мне, где его разместить?

public class SharedVariables extends Application 
{
public static ArrayList<ArrayList<Map<String,String>>>  ArrayOfImageUrlDicts;
public static ArrayList<ArrayList<Map<String,String>>> ArrayOfImageNameDicts;

@Override
public void onCreate()
{
    super.onCreate();
    ArrayOfImageUrlDicts  = new ArrayList<ArrayList<Map<String,String>>>(); 
    ArrayOfImageNameDicts = new ArrayList<ArrayList<Map<String,String>>>();
}
}

2 ответа

Решение

На самом деле это не настоящий Singelton ( см. Википедия для точного описания Singelton), а обычная статическая переменная. Если вы хотите использовать больше статических переменных, вы можете использовать это, так как это делает вещи намного красивее. Однако, чтобы ответить на ваш конкретный вопрос, вы можете использовать статический блок, в котором вы инициализируете эти переменные, или инициализируете их непосредственно после объявления.

public class SharedVariables extends Application 
{
   public static ArrayList<ArrayList<Map<String,String>>>  ArrayOfImageUrlDicts = new ArrayList<ArrayList<Map<String,String>>>();
   public static ArrayList<ArrayList<Map<String,String>>> ArrayOfImageNameDicts = new ArrayList<ArrayList<Map<String,String>>>();

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

или же

public class SharedVariables extends Application 
{
   public static ArrayList<ArrayList<Map<String,String>>>  ArrayOfImageUrlDicts;
   public static ArrayList<ArrayList<Map<String,String>>> ArrayOfImageNameDicts;
   static 
   {
      ArrayOfImageUrlDicts = new ArrayList<ArrayList<Map<String,String>>>();
      ArrayOfImageNameDicts = = new ArrayList<ArrayList<Map<String,String>>>();
   }
   @Override
   public void onCreate()
   {
      super.onCreate();
   }
}
public class SharedVariables extends Application 
{

ModelSingleTonclass obj;

public static ArrayList<ArrayList<Map<String,String>>>  ArrayOfImageUrlDicts;
public static ArrayList<ArrayList<Map<String,String>>> ArrayOfImageNameDicts;

@Override
public void onCreate()
{
    super.onCreate();

obj=ModelSingleTonclass.getInstance();

    ArrayOfImageUrlDicts  = new ArrayList<ArrayList<Map<String,String>>>(); 
    ArrayOfImageNameDicts = new ArrayList<ArrayList<Map<String,String>>>();
}
}
Другие вопросы по тегам