#android
#Android
Вопрос:
Я хотел знать, каков наилучший подход для совместного использования singleton в моем приложении для Android. У меня есть несколько действий, которые не зависят друг от друга, но я хочу, чтобы у них был синглтон, который все они могли бы читать / записывать.
Где я должен это разместить?
Спасибо
Ответ №1:
Ваше приложение должно быть одноэлементным. Это позволяет избежать многих других проблем, связанных с совместным использованием данных или моделей.
В вашем manifest.xml :
<application android:icon="@drawable/icon"
android:label="@string/app_name" android:debuggable="false"
android:name="<class of your application see below>"
android:launchMode="singleTop">
..... all activities/services/receivers/etc... as usual
</application>
И ваше android: name относится к этому классу :
public class MyApp extends Application {
//singleton, but use onCreate more than constructor to build shared resources.
....
}//class
И затем, из любого действия, вы можете извлечь свой синглтон, чтобы получить общие ресурсы, выполнив это :
((MyApp)getApplicationContext()).getSharedResources()....
или
MyApp.getInstance().getSharedResources()....
Наличие синглтона в качестве приложения является обычным шаблоном проектирования в Android, особенно полезно для обработки вращения устройства (поскольку это приводит к уничтожению действий и их воссозданию), поскольку это обеспечивает стабильную сущность, которая сохраняется в течение жизненного цикла приложения.
Комментарии:
1. Я считаю, что
android:launchMode="singleTop"
в этом нет необходимости, поскольку launchMode является атрибутом действия , а не приложения .