Skip to content

Latest commit

 

History

History
58 lines (36 loc) · 4.06 KB

uinotes.md

File metadata and controls

58 lines (36 loc) · 4.06 KB

Особенности разработки Front-End

Мелкие удобства

Хороший тон для Native-приложения: при нажатии кнопки "Tick" в экранной клавиатуре, находить в форме (Activity) кнопку "Submit" и имитировать её нажатие.

При тычке в любую область экрана, которая не является строкой редактирования, разумно прятать экранную клавиатуру, т.к. пользователь, очевидно, не хочет вводить какую-то информацию.

Аутентификация

Наиболее понятной в интернациональном сообществе кажется пара слов Join/Sign In. Менее понятные альтернативы: Sign Up/Sign In, Register/Login.

В прототипе приложения ввод логина/пароля и отправка обращения на сервер были разнесены по разным Activities. Это казалось хорошей идеей, т.к. каждый тип Activity делал свою специфическую работу. В действительности, обработка результата аутентификации и его маршрутизация по коду оказались очень массивными и сильно запутали код. Факт - решения в пользовательском интерфейсе должны быть максимально простыми, коммуникации - примитивными. Любое переусложнение приводит к кратному росту объёма кода.

Нагромождение Activities

Нужно очень внимательно управлять открываемыми Activity. Чтобы количество Activities не разрасталось хаотично, следует выполнять finish() при завершении работы с Activity. При возврате на главную активность, следует использовать флаг Intent.FLAG_ACTIVITY_CLEAR_TOP. Например:

#!java

    public void onBackPressed() {

        // Флаг FLAG_ACTIVITY_CLEAR_TOP отвечает, что нужно активировать
        // указанную Activity, а все остальные Activity, находящиеся
        // поверх него закрыть
        Intent i = new Intent(this, MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
    }

Используемая Locale

Отдельная большая проблема - учёт текущей Locale. Проблемы могут возникнуть, буквально, ниоткуда. Например, кажется разумным использовать следующую команду, чтобы преобразовать double в строку:

#!java

mContent.put("latitude", String.format ("%3.7f", latitude));

На самом деле, команда сохраняет double с учётом текущей Locale и сохраняя число 45.8763 мы можем получить строку "45,8763". Соответственно, попытка восстановить double из такой строки приведёт к возникновению исключения, если воспользоваться функцией parseDouble(). Например:

#!java

mCarWashLatitude = Double.parseDouble(strLatitude);

Для того, чтобы в результате преобразования double в строку получилась строка конвертируемая в double без ошибок, необходимо указывать корректную LOCALE, например:

#!java

String.format(Locale.US, "%3.7f", latitude);