Как распределять ресурсы между действиями / службами

#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 является атрибутом действия , а не приложения .