Евгений Колесников пре 4 година
родитељ
комит
5bd8686b65
2 измењених фајлова са 50 додато и 1 уклоњено
  1. 50 0
      articles/android_auth.md
  2. 0 1
      readme.md

+ 50 - 0
articles/android_auth.md

@@ -14,6 +14,7 @@
 * [Первичная настройка приложения](#Первичная-настройка-приложения)
 * [Первичная настройка приложения](#Первичная-настройка-приложения)
 * [Добавление альбомной ориентации](#Добавление-альбомной-ориентации)
 * [Добавление альбомной ориентации](#Добавление-альбомной-ориентации)
 * [Модальный диалог авторизации](#Модальный-диалог-авторизации)
 * [Модальный диалог авторизации](#Модальный-диалог-авторизации)
+* [Регулярные выражения](#Регулярные-выражения)
 * [HTTP-запросы, методы, форматы, заголовки.](#HTTP-запросы-методы-форматы-заголовки)
 * [HTTP-запросы, методы, форматы, заголовки.](#HTTP-запросы-методы-форматы-заголовки)
 
 
 ## API
 ## API
@@ -734,6 +735,55 @@ else
 
 
 Как видите, в параметры GET-запроса я добавил заголовки, чтобы можно было добавить токен. Дальнейшая реализация уже с вас.
 Как видите, в параметры GET-запроса я добавил заголовки, чтобы можно было добавить токен. Дальнейшая реализация уже с вас.
 
 
+
+## Сохранение данных при работе приложения
+
+Специфика жизненного цикла **activity** такова, что при каждом чихе (смена ориентации, языка и т.п.) окно пересоздаётся То есть все наши данные теряются.
+
+Гугл рекомендует нам пользоваться событиями *onSaveInstanceState* и *onRestoreInstanceState* которые вызываются, соответственно, при удалении **activity** и при восстановлении.
+
+В параметрах этих функций передаётся объект, в который (и из которого) мы можем сохранить нужные нам данные и потом восстановить.
+
+Но хранить в таком объекте можно только скалярные данные (т.е. базовые типы типа "целое", "строка" и т.п.). Чтобы сохранить более-менее сложный объект, например, массив продукции, нужно использовать сериализацию/десериализацию.
+
+Есть ещё более модная концепция **LiveData** - но там даже у меня происходит вывих мозга (это самая правильная концепция и если вы не дай бог станете таки андроид-разработчиками, то разобраться в ней надо).
+
+Но ещё есть простой рабоче-крестьянский вариант с глобальными переменными. Само понятие глобальные переменные противоречит одному из основных постулатов ООП - **инкапсуляция**, поэтому его не рекомендуется использовать в сколько-нибудь серъезных проектах.
+
+1. Создайте класс **MyApp**, который наследуется от класа **Application** и внутри опишите **публичные** переменные, которые можно будет использовать во всех **activity** нашего приложения
+
+    ```kt
+    class MyApp: Application() {
+        var token = ""
+        var username = ""
+    }
+    ```
+
+2. В манифесте в тег **application** добавьте атрибут *android:name=".MyApp"*, где *.MyApp* это имя созданного нами ранее класса
+
+3. В классах, где нам нужны глобальные переменные создаем переменную, которая будет хранить указатель на **MyApp**
+
+    ```kt
+    private lateinit var app: MyApp
+    ```
+
+    В конструкторе класса проинициализируйте её
+
+    ```kt
+    app = applicationContext as MyApp
+    ```
+
+    И дальше в коде можете её использовать
+
+    ```kt
+    if(app.token.isEmpty()){
+        // 
+    }
+    else {
+        // 
+    }
+    ```
+
 # Задание
 # Задание
 
 
 * на первый экран добавить заставку (splash-screen) с таймером на пару секунд, только потом показывать диалог для ввода логина/пароля
 * на первый экран добавить заставку (splash-screen) с таймером на пару секунд, только потом показывать диалог для ввода логина/пароля

+ 0 - 1
readme.md

@@ -146,7 +146,6 @@ http://sergeyteplyakov.blogspot.com/2014/01/microsoft-fakes-state-verification.h
 кнопки с картинками (нижнее или боковое меню)(фрагменты)
 кнопки с картинками (нижнее или боковое меню)(фрагменты)
 операции с датой
 операции с датой
 
 
-- выпадающий список (карта отправителя/получателя) (шарапова пн)
 - сохранение данных при повороте (попов вт)
 - сохранение данных при повороте (попов вт)
 - локальное хранилище (малинин ср)
 - локальное хранилище (малинин ср)
 - чтение/запись файлов (галерея) (смирнов чт)
 - чтение/запись файлов (галерея) (смирнов чт)