Хороший тон для Native-приложения: при нажатии кнопки "Tick" в экранной клавиатуре, находить в форме (Activity) кнопку "Submit" и имитировать её нажатие.
При тычке в любую область экрана, которая не является строкой редактирования, разумно прятать экранную клавиатуру, т.к. пользователь, очевидно, не хочет вводить какую-то информацию.
Наиболее понятной в интернациональном сообществе кажется пара слов Join/Sign In. Менее понятные альтернативы: Sign Up/Sign In, Register/Login.
В прототипе приложения ввод логина/пароля и отправка обращения на сервер были разнесены по разным Activities. Это казалось хорошей идеей, т.к. каждый тип Activity делал свою специфическую работу. В действительности, обработка результата аутентификации и его маршрутизация по коду оказались очень массивными и сильно запутали код. Факт - решения в пользовательском интерфейсе должны быть максимально простыми, коммуникации - примитивными. Любое переусложнение приводит к кратному росту объёма кода.
Нужно очень внимательно управлять открываемыми 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. Проблемы могут возникнуть, буквально, ниоткуда. Например, кажется разумным использовать следующую команду, чтобы преобразовать 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);