ПЗ (1194855), страница 6
Текст из файла (страница 6)
Данный метод вызывается, когда окно становится невидимым для пользователя. Это может произойти как при уничтожении текущей Activity, так и при запуске новой Activity, перекрывшей текущее окно. В этом методе Activity переходит в состояние Stopped. Однако сохраняется состояние всех элементов интерфейса. При повторном открытии Activity восстанавливаются объекты, хранящиеся в памяти. Если пользователь возвращается к текущей Activity, предварительно перейдя на другую, то система вызовет метод onRestart. Однако, если Activity полностью завершила свою работу (например, из-за закрытия приложения), то вызывается метод onDestroy().
3.4.6 Метод onRestart()
Данный метод вызывается в случае, если окно возвращается в приоритетный режим после вызова метода onStop(). Это означает, что Activity была остановлена, а затем снова запущена пользователем. Данный метод всегда сопровождается вызовом метода onStart().
3.4.7 Метод onDestroy()
Работа Activity завершается вызовом данного метода. При этом удаляются все статические данные Activity. Отдаются все используемые ресурсы [31]. Также данный метод вызывается при изменении ориентации экрана, уничтожая Activity, а затем создавая заново, используя метод onCreate().
Переходы между перечисленными выше методами можно представить в виде простой схемы (рисунок 23).
Рисунок 23 – Переход между состояниями Activity
Рассмотренные методы жизненного цикла мобильных приложений в операционной системе Android позволяют сделать некоторые выводы. Жизненный цикл приложения жестко контролируется системой и сильно зависит от нужд пользователя и доступных ресурсов. В Android ресурсы более ограничены, чем в других операционных системах, поэтому если система решит, что работу приложения необходимо остановить, чтобы мобилизовать дополнительные ресурсы для выполнения более приоритетных задач, то работа приложения будет прекращена.
-
Реализация отправки заявки
Необходимо реализовать передачу данных заявки на почту организации. Одним из способов является отправка E-Mail средствами Android. Отправку писем средствами Android можно реализовать несколькими способами – с вызовом программы приёма-передачи почтовых сообщений и анонимная отправка сообщения без вызова дополнительных приложений. Для данного приложения более приемлемым является второй метод.
Этот метод с применением внешней библиотеки, которая позволяет нам отсылать письма более приемлемыми способами. Обозначим плюсы данного метода:
– не требует от пользователя настроенного клиента;
– может быть полностью анонимным;
– можно передавать различные данные.
Для работы метода необходимо установить дополнительные библиотеки javamail-android. Для настройки также понадобится почтовый ящик зарегистрированный на gmail.com. В данном случае он будет выступать в виде шлюза через которые будут проходить все заявки пользователей [30].
Настройка функции начинается с создания класса MailSenderClass.java. В данном классе записываются настройки того сервера, через который будет передаваться сообщение. В классе организовано несколько методов:
– public MailSenderClass(String user, String password) – Конструктор. В качестве аргументов передаются логин и пароль от промежуточного почтового ящика на gmail.com. Здесь же прописываются параметры smtp-подключения к серверу;
– protected PasswordAuthentication getPasswordAuthentication() – Аутентификация для сервера;
– public synchronized void sendMail(String subject, String body, String sender, String recipients, String filename) – Основной метод, в который передаются данные для отправки.
Код последнего метода представлен на листинге 1.
-
public synchronized void sendMail(String subject, String body, String sender, String recipients, String filename) throws Exception {
-
try {
-
MimeMessage message = new MimeMessage(session);
-
-
message.setSender(new InternetAddress(sender));
-
-
message.setSubject(subject);
-
-
if (recipients.indexOf(',') > 0)
-
message.setRecipients(Message.RecipientType.TO,
-
InternetAddress.parse(recipients));
-
else
-
message.setRecipient(Message.RecipientType.TO,
-
new InternetAddress(recipients));
-
-
BodyPart messageBodyPart = new MimeBodyPart();
-
messageBodyPart.setText(body);
-
_multipart.addBodyPart(messageBodyPart);
-
-
-
if (!filename.equalsIgnoreCase("")) {
-
BodyPart attachBodyPart = new MimeBodyPart();
-
DataSource source = new FileDataSource(filename);
-
attachBodyPart.setDataHandler(new DataHandler(source));
-
attachBodyPart.setFileName(filename);
-
-
_multipart.addBodyPart(attachBodyPart);
-
}
-
message.setContent(_multipart);
-
-
Transport.send(message);
-
} catch (Exception e) {
-
Log.e("sendMail","Ошибка отправки функцией sendMail! ");
-
}
Листинг 1 – Метод передачи данных
В методе, представленном на листинге 1 используется объект класса MimeMessage для составления письмо, для отправки сообщения передаётся методу send, класса Transport.
Основной метод отправления сообщения выполняется в функции sitv_sender_mail_async, представляющей класс AsyncTask (листинг 2).
-
private class sender_mail_async extends AsyncTask<Object, String, Boolean> {
-
ProgressDialog WaitingDialog;
-
@Override
-
protected void onPreExecute() {
-
// Выводим пользователю процесс загрузки
-
WaitingDialog = ProgressDialog.show(ExtendedMail.this, "Отправка данных", "Отправляем сообщение...", true);
-
}
-
-
@Override
-
protected void onPostExecute(Boolean result) {
-
// Прячем процесс загрузки
-
WaitingDialog.dismiss();
-
Toast.makeText(mainContext, "Отправка завершена!!!", Toast.LENGTH_LONG).show();
-
((Activity)mainContext).finish();
-
}
-
@Override
-
protected Boolean doInBackground(Object... params) {
-
try {
-
// Получаем данные с наших полей
-
title = ((EditText)findViewById(R.id.screen_sendnews_et_title)).getText().toString();
-
text = ((EditText)findViewById(R.id.screen_sendnews_et_text)).getText().toString();
-
-
from = "from_post_msg@gmail.com";
-
where = "where_post_msg@yandex.ru";
-
-
// Вызываем конструктор и передаём в него наши логин и пароль от ящика на gmail.com
-
MailSenderClass sender = new MailSenderClass("mypostmail@gmail.com", "password");
-
-
// И вызываем наш метод отправки
-
sender.sendMail(title, text, from, where, attach);
-
} catch (Exception e) {
-
Toast.makeText(mainContext, "Ошибка отправки сообщения!", Toast.LENGTH_SHORT).show();
-
}
-
return false;
-
}
-
}
Листинг 2 – Метод отправления сообщения
Для подключения функции необходимо создать экземпляр класса MailSenderClass, передать конструктору логин и пароль. Далее происходит вызов метода отправки sendMail с нашими параметрами.
Асинхронный процесс состоит из трех методов onPreExecute(), doInBackground() и onPostExecute(), которые выполняются в написанной последовательности [32].
-
public void onClick(View v) {
-
sender_mail_async async_sending = new sender_mail_async();
-
async_sending.execute();
-
}
Листинг 3 – Подключение функции
Данный метод – это простой, но эффективный способ отправки заявок пользователей на электронную почту предприятия. Он подходит для небольших проектов, не требующих особых требований к защите передаваемой информации.
4 ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ
В этом разделе будет произведен расчет затрат на разработку мобильного клиентского приложения для компании ООО «Эгида». Для этого перед тем, как приступить к непосредственным расчетам, необходимо проанализировать специфику данной работы.
4.1 Назначение и специфика работы
Целью ВКР является разработка мобильного клиентского приложения для строительной организации.
Разрабатываемое ПО позволит привлечь больше потенциальных клиентов за счет расширения деятельности компании на мобильных устройствах. Мобильность ПО позволит повысить качество и удобство получения услуг, что позволит увеличить эффективность деятельности организации.
В дальнейшем приложение планируется к добавлению в список доступных для продажи через официальный магазин для устройств на базе ОС Android.
Затраты на разработку проекта представляют собой стоимостную оценку использованных в процессе разработки материалов, оплату труда разработчиков, затраты на работу, выполненную сторонними организациями, а также трудоемкость проведения работ.
4.2 Расчет затрат на исследование и разработку проекта
Затраты на исследование и разработку включают в себя все расходы, связанные с их выполнением. Определение затрат на исследование и разработку производится путем составления калькуляции себестоимости. Она является основным документом, на основании которого осуществляется планирование и учет затрат на выполнение (таблица 2).
Таблица 2 – Длительность по этапам разработки
| № | Этапы и содержание выполняемых работ | Исполнитель | Трудоемкость, дн., Ti | Ставка, руб./дн., Ci |
| 1 | Консультация | Руководитель | 5 | 3000.00 |
| 2 | Обзор литературы | Разработчик | 3 | 1800.00 |
| 3 | Анализ предметной области | Разработчик | 5 | 1800.00 |
| 4 | Проектирование мобильного приложения | Разработчик | 14 | 1800.00 |
| 5 | Технико-экономическое обоснование | Разработчик | 3 | 1800.00 |
| 6 | Оформление пояснительной записки | Разработчик | 7 | 1800.00 |
| 7 | Согласование пояснительной записки | Руководитель | 1 | 3000.00 |
| 8 | Оформление иллюстративного материала | Разработчик | 3 | 1800.00 |
| 9 | Согласование иллюстративного материала | Руководитель | 1 | 3000.00 |
4.3 Расчет затрат на основную заработную плату















