Глобальная инициализация в Android - PullRequest
1 голос
/ 19 июля 2011

Я пишу некоторый библиотечный код, распространяемый в виде jar-файла, который разработчики должны будут инициализировать с помощью идентификатора приложения перед использованием. Инициализация - это просто вызов функции, например

MyLibrary.initialize("16ea53b");

Хитрость в том, что я не уверен, как поручить разработчикам сделать этот вызов инициализации. Сначала я думал, что один блок статического инициализатора в основной деятельности будет самым простым способом сделать это. Проблема в том, что пользователь мог войти в приложение через какое-либо другое действие или намерение, и основное действие не будет загружено. Существует ли общий способ обеспечить запуск строки кода при запуске приложения независимо от того, как оно было запущено?

Вызов инициализации идемпотентен, поэтому я мог бы просто сказать людям, чтобы он делал этот вызов инициализации в любом месте, где его можно было использовать, но это было бы утомительно.

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Одним из простых способов является сохранение чего-либо в SharedPrefences при инициализации кода вашей библиотеки.И затем, где бы вы ни считали важным, вы можете проверить это значение и продолжить, если оно существует, или запросить инициализацию или что-то еще (сообщения об ошибках и т. Д.).Это также позволит вашим разработчикам не выполнять инициализацию более одного раза.

Обязательно предоставьте разработчикам API для сброса этого значения.

Кроме того, здесь - хороший доклад о разработке API, который может помочь вам, Джошуа Блох.

0 голосов
/ 19 июля 2011

Это звучит как проблема, которую можно решить путем расширения путем создания класса, расширяющего Application, и размещения его там, которое является глобальным для всего Application.

...