Я хочу остановить службу, когда пользователь удаляет приложение из недавнего списка.
blockquote>Да, вы можете сделать это, используя флаг
stopWithTask
в качествеtrue
для службы в файле манифеста.Пример:
<service android:enabled="true" android:name=".MyService" android:exported="false" android:stopWithTask="true" />
ИЛИ
Если вам нужно удалить приложение из недавнего списка и сделать что-то перед остановкой службы, вы можете использовать это:
<service android:enabled="true" android:name=".MyService" android:exported="false" android:stopWithTask="false" />
Таким образом будет вызван метод вашей службы
onTaskRemoved
. ( Помните , он не будет вызываться, если вы установитеstopWithTask
наtrue
).public class MyService extends Service { @Override public void onStartService() { //your code } @Override public void onTaskRemoved(Intent rootIntent) { System.out.println("onTaskRemoved called"); super.onTaskRemoved(rootIntent); //do something you want //stop service this.stopSelf(); } }
Надеюсь, что это поможет.
HTTP определенно снижает нагрузку на ваших клиентов. Во многих местах есть прокси или брандмауэры, которые блокируют весь FTP-трафик (входящий или исходящий).
Большим преимуществом HTTP является то, что он проходит через брандмауэры и его очень легко зашифровать - просто используйте HTTPS на порту 443 вместо HTTP на порту 80. Оба проходят через прокси и брандмауэры. И в наши дни довольно легко загрузить файлы размером 20 МБ через HTTP / HTTPS с помощью POST.
Проблема с HTTP в том, что его нельзя перезапустить для загрузки. Если вы получили 80% отправленного файла, а затем произошел сбой, вам нужно будет перезапустить сначала. Вот почему поставщики все чаще используют загрузчики и загрузчики на основе flash, java или javascript. Эти системы могут видеть, какая часть файла была отправлена, отправлять MAC, чтобы убедиться, что он прибыл правильно, и повторно отправлять недостающие части.
MAC важнее, чем вы думаете. Контрольные суммы TCP всего 32 бита, так что вероятность того, что ошибка не будет обнаружена, составляет 1 из 4 миллиардов. Это потенциально часто случается с сегодняшним Интернетом.
Я определенно выбираю подход HTTP. как и остальные люди здесь. Причина этого в том, что вы сказали о том, что размер большинства файлов составляет от одного до трех мегабайт.
Проблема заключается в «остальных», поэтому:
Рассматривали ли вы возможность пользователям отправлять файлы большего размера через e -mail скрипту deamon, который получает электронные письма и загружает их в учетную запись, связанную с отправителем? Или есть решение в виде флеш-загрузчика в стиле facebook.
FTP будет использовать меньшую полосу пропускания, чем HTTP, так как последний должен будет кодировать (base64) двоичное содержимое в обычный текст, таким образом увеличивая общий размер передачи. (на 1/3).
Однако потребление полосы пропускания не обязательно может быть серьезной проблемой по сравнению с другими факторами, такими как удобство использования и безопасность, в которых HTTP преобладает.
Достаточно ли надежна загрузка HTTP для такие большие файлы
Одним из основных преимуществ FTP является возможность возобновления прерванной загрузки. Большинство FTP-серверов и клиентов поддерживают это, хотя не всегда активируются. В то время как с HTTP теоретически возможно использование специальных заголовков, но обычный клиент (то есть браузер) не будет поддерживать его.
Еще одним преимуществом будет массовая загрузка: очень просто в FTP, но не в HTTP.
Но почему бы и нет. просто предложить оба варианта? HTTP для тех, кто находится за прокси или не хочет / не может использовать FTP-клиент, и FTP для людей, которым приходится загружать много или большие загрузки через ненадежные соединения.
Я не хочу быть саркастичным, но протокол передачи файлов должен быть более надежным при передаче файлов :)
Доступность / использование ресурсов является более важной проблемой, чем надежность или скорость. Каждая загрузка потребляет ресурсы - поток / память / и т. Д. - на вашем веб-сервере на время загрузки. Если трафик загрузки контента значительный для больших файлов, было бы лучше использовать FTP просто для того, чтобы освободить HTTP-сервер, чтобы он лучше реагировал на запросы страниц.