Уже многое написано на хабре про андройд, но такой статьи найти не удалось.
Очень часто, при написании приложения, нам необходимо хранить его состояние. Надеюсь все знают, что Activity это не тот класс в котором стоит хранить состояние. Во-первых у вас может быть более одного активити, а во вторых активити может прекратить свое существование, например при смене ориентации экрана. При написании приложения на java, для решения таких задач, можно использовать паттерн Singleton. Но при написании приложений для андройда я не советую использовать этот шаблон. Как известно, сборщик мусора, в java, удаляет из памяти те объекты, на которые никто не ссылается. Представим ситуацию, вы создали инстанс своего синглтона, и храните ссылку на него в активити. При смене ориентации экрана активити умирает, и ссылка на ваш синглтон теряется. Теперь все зависит не от вас, а от того когда отработает сборщик мусора.
Интересно?
Для решения этой проблемы, можно использовать класс Application. Этот класс предназначен именно для хранения состояния.
Вам остается унаследовать этот класс:
прописать его в файле AndroidManifest.xml
Для получения инстанса класса MyApplication, нужно воспользоваться методом
На этом все.
P.S. Для долговременного хранения состояния и данных, нужно использовать другие средства.
Очень часто, при написании приложения, нам необходимо хранить его состояние. Надеюсь все знают, что Activity это не тот класс в котором стоит хранить состояние. Во-первых у вас может быть более одного активити, а во вторых активити может прекратить свое существование, например при смене ориентации экрана. При написании приложения на java, для решения таких задач, можно использовать паттерн Singleton. Но при написании приложений для андройда я не советую использовать этот шаблон. Как известно, сборщик мусора, в java, удаляет из памяти те объекты, на которые никто не ссылается. Представим ситуацию, вы создали инстанс своего синглтона, и храните ссылку на него в активити. При смене ориентации экрана активити умирает, и ссылка на ваш синглтон теряется. Теперь все зависит не от вас, а от того когда отработает сборщик мусора.
Интересно?
Для решения этой проблемы, можно использовать класс Application. Этот класс предназначен именно для хранения состояния.
Вам остается унаследовать этот класс:
public class MyApplication extends Application {
private String myStringState;
private Integer myIntState;
}
прописать его в файле AndroidManifest.xml
<application android:label="@string/app_name" android:icon="@drawable/icon" android:name=".MyApplication">
...
Для получения инстанса класса MyApplication, нужно воспользоваться методом
android.app.Activity#getApplication
На этом все.
P.S. Для долговременного хранения состояния и данных, нужно использовать другие средства.