Это в конечном итоге дойдет до вашего вопроса, но я сначала хочу затронуть ряд вопросов, которые вы поднимаете в своих различных комментариях к различным ответам, уже приведенным на момент написания этой статьи. У меня нет намерения передумать - скорее, это здесь для тех, кто в будущем будет читать этот пост.
Дело в том, что я не могу допустить
Android, чтобы определить, когда мое приложение
собирается быть прекращено. это должно быть
выбор пользователя.
Миллионы людей совершенно довольны моделью, в которой среда закрывает приложение по мере необходимости. Эти пользователи просто не думают о «закрытии» приложения Android, равно как и о «прекращении» веб-страницы или «прекращении» термостата.
Пользователи iPhone во многом аналогичны, в том смысле, что нажатие кнопки iPhone не обязательно «чувствует», как приложение было закрыто, так как многие приложения iPhone поднимаются с того места, где пользователь остановился, даже если приложение действительно было закрыто ( поскольку в настоящее время iPhone поддерживает только одно стороннее приложение).
Как я уже говорил выше, есть много
что происходит в моем приложении
Нажать на устройство, списки с заданиями
это всегда должно быть там и т. д.).
Я не знаю, что означает «списки с задачами, которые всегда должны быть там», но «данные, передаваемые на устройство» - приятная выдумка, которая ни в коем случае не должна выполняться какой-либо деятельностью. Используйте запланированное задание (через AlarmManager
), чтобы обновить данные для максимальной надежности.
Наши пользователи входят в систему и не могут делать
что каждый раз, когда они получают телефонный звонок
и Android решает убить приложение.
Существует множество приложений для iPhone и Android, которые занимаются этим. Обычно это происходит потому, что они держат учетные данные для входа, а не заставляют пользователей каждый раз входить в систему вручную.
Например, мы хотим проверить обновления
при выходе из приложения
Это ошибка в любой операционной системе. Насколько вы знаете, причина того, что ваше приложение «закрывается», заключается в том, что ОС закрывается, и тогда ваш процесс обновления завершится ошибкой. Как правило, это не очень хорошая вещь. Либо проверяйте обновления при запуске, либо проверяйте обновления полностью асинхронно (например, с помощью запланированной задачи), но не при выходе.
Некоторые комментарии предполагают, что удар по
кнопка назад не убивает приложение при
все (см. ссылку в моем вопросе выше).
Нажатие кнопки НАЗАД не «убивает приложение». Он завершает действие, которое было на экране, когда пользователь нажал кнопку НАЗАД.
Он должен завершаться только тогда, когда
пользователи хотят прекратить это - никогда
любой другой путь. Если ты не умеешь писать
приложения, которые ведут себя так же, как в Android,
тогда я думаю, что Android не может быть использован
для написания реальных приложений = (
Тогда и веб-приложения не могут. Или WebOS , если я правильно понимаю их модель (у меня еще не было возможности поиграть с ней). Во всех этих случаях пользователи ничего не «прекращают» - они просто уходят. iPhone немного отличается тем, что в настоящее время он позволяет запускать только одну вещь за раз (за некоторыми исключениями), и поэтому процесс ухода подразумевает довольно немедленное завершение приложения.
Есть ли способ для меня действительно бросить
приложение?
Как и все остальные говорили вам, пользователи (через BACK) или ваш код (через finish()
) могут закрыть вашу текущую деятельность. Пользователям, как правило, больше ничего не нужно для правильно написанных приложений, больше, чем им нужна опция «выход» для использования веб-приложений.
Нет двух прикладных сред по определению. Это означает, что вы можете видеть тенденции в окружающей среде по мере появления новых и захоронения других.
Например, усиливается движение, чтобы попытаться исключить понятие «файл». Большинство веб-приложений не заставляют пользователей думать о файлах. Приложения для iPhone обычно не заставляют пользователей думать о файлах. Приложения Android обычно не заставляют пользователей думать о файлах. И так далее.
Точно так же растет стремление избавиться от понятия «прекращение» приложения. Большинство веб-приложений не заставляют пользователя выходить из системы, а неявно выходят из системы после определенного периода бездействия. То же самое с Android и, в меньшей степени, iPhone (и, возможно, WebOS).
Это требует большего акцента на разработке приложений, сосредоточении на бизнес-целях и отсутствии привязки к модели реализации, привязанной к предыдущей среде приложений. Разработчики, которым не хватает времени или желания сделать это, будут разочарованы новыми средами, которые нарушают их существующую ментальную модель. Это не вина любой из этих сред, равно как и ошибка горы, в которой штормы текут вокруг нее, а не сквозь нее.
Например, в некоторых средах разработки, таких как Hypercard и Smalltalk, приложение и инструменты разработки были объединены в одной установке. Эта концепция не получила широкого распространения за пределами языковых расширений приложений (например, VBA в Excel , Lisp в AutoCAD ). Поэтому разработчики, которые придумали ментальные модели, которые предполагали наличие инструментов разработки в самом приложении, должны были либо изменить свою модель, либо ограничить себя средами, в которых их модель была бы верна.
Итак, когда вы пишете:
Наряду с другими грязными вещами, которые я
обнаружил, я думаю, что разработка
наше приложение для Android не собирается
случается.
Похоже, что сейчас это к лучшему, для вас. Точно так же я бы посоветовал вам не пытаться портировать ваше приложение в Интернет, поскольку некоторые из тех же проблем, о которых вы сообщали в Android, вы найдете и в веб-приложениях (например, без «завершения»). Или, наоборот, когда-нибудь, если вы do перенесете свое приложение в Интернет, вы можете обнаружить, что поток веб-приложений может лучше подходить для Android, и вы можете вернуться к порту Android в это время.