Есть несколько вариантов:
AsyncTask
в вашем классе Activity
. Предполагая, что вы не используете одну и ту же задачу в нескольких действиях, это самый простой способ. Весь ваш код остается прежним, вы просто перемещаете существующий класс задач в вложенный класс внутри класса вашей деятельности. public class MyActivity extends Activity {
// existing Activity code
...
private class MyAsyncTask extends AsyncTask<String, Void, String> {
// existing AsyncTask code
...
}
}
AsyncTask
, который ссылается на ваш Activity
. Вы должны создать экземпляр задачи с чем-то вроде new MyAsyncTask(this).execute(param1, param2)
. public class MyAsyncTask extends AsyncTask<String, Void, String> {
private Activity activity;
public MyAsyncTask(Activity activity) {
this.activity = activity;
}
// existing AsyncTask code
...
}
Существуют некоторые пользователи, которые будут позади корпоративных брандмауэров, которые не разрешают FTP...
Пользователи со строгими брандмауэрами как этот, вероятно, чтобы быть разрешенными установить и выполнить .exe файл с Вашего веб-сайта?
Смотрите на ЗАВИХРЕНИЕ. Эта статья описывает, как сделать многослойную одновременную загрузку через HTTP. Я использовал ЗАВИХРЕНИЕ в прошлом для управления загрузками FTP файлов более чем 300 ГБ.
Другая подсказка: можно повысить времена загрузки еще больше при увеличении размера Окна TCP на конфигурации NIC клиента. Установите его настолько высоко, как ОС позволяет, и необходимо видеть до 2x улучшение в зависимости от физической сети. Это работало на меня на Windows 2000 и 2003 когда FTPing по WAN. Вниз сторона - это, может увеличиться наверху для всего другого сетевого трафика, который хочет только некоторых КБ для сетевого пакета, но теперь вызывается к send/recv в пакетах 64 КБ. Ваш пробег может варьироваться.
Править: Что точно это, Вы пытаетесь выполнить? Кто аудитория? Я принят некоторое время, что Вы надеетесь делать это по своей собственной сети; но Вы, кажется, подразумеваете, что сторона клиента - кто-то в Интернете. Я думаю, что нам нужны более ясные требования.
@levand:
Мое фактическое предпочтение, как пользователь, в этих ситуациях должен загрузить легкий .exe файл, который загружает файл для Вас.
Это - dealbreaker для многих, многих сайтов. Пользователи или или должны чрезвычайно отказаться загрузить .exe файлы с веб-сайтов и выполнить их волей-неволей. Даже если они не всегда, что осторожное, неосторожное поведение не что-то, что мы должны поощрить как ответственные разработчики.
Если Вы работаете над чем-то вроде интранет компании, .exe потенциально хорошо решение, но для государственной сети?Ни за что.
@TonyB:
Что лучший способ состоит в том, чтобы сделать это, не используя FTP.
Я сожалею, но я должен спросить почему требование. Ваш вопрос читает в меня вроде, "что лучший способ состоит в том, чтобы приготовить стейк без какой-либо сути или теплового источника?" FTP был разработан для этого вида вещи.
Проблема с упомянутым подходом апплета состоит в том, что, если у Вас нет конечного пользователя, изменяют их свойства безопасности Java, которые Ваш апплет не будет иметь разрешения сохранить к жесткому диску.
Это может быть возможная сеть Java использования, Запускаются (иначе JNLP). Я думаю, что, если это - приложение со знаком, это может получить дополнительное разрешение записать в жесткий диск. Это не слишком отличается от загрузки подход exe. Проблема с этим состоит в том, что пользователь должен иметь правильную версию установленного Java и должен иметь сеть Java, Запускают установку возможности правильно.
Я рекомендовал бы подход exe, поскольку для нетехнических пользователей будет самым легким использовать.
@jjnguy я ищу апплет Java или компонент ActiveX, который сделает это для меня. Это нетехнические пользователи, таким образом, мы действительно просто хотим сделать, чтобы они нажали загрузку, и полный файл оказывается в указанном местоположении
@levand проблема только существует в IE (это работает в Firefox) поэтому, в то время как ActiveX только работал бы над IE, IE, является единственным, для которого мы нуждаемся в работе вокруг.
@travis - интересная идея. Не уверенный, если это будет работать на то, в чем я нуждаюсь, но я буду иметь в виду его. Я надеюсь найти, что что-то интегрируется с существующим сайтом вместо того, чтобы иметь необходимость выйти к третьему лицу. Это также потребовало бы, чтобы я установил bittorrent средство отслеживания, которое не будет так легко, как это звучит для этого приложения, потому что у различных пользователей будет другой доступ к различным файлам.
@ceejayoz
Я полностью соглашаюсь, но его часть требования для нашего клиента. Будет доступ FTP, но у каждого пользователя будет опция загрузки через HTTP или FTP. Существуют некоторые пользователи, которые будут позади корпоративных брандмауэров, которые не разрешают FTP
Я видел, что другие сайты делают это в прошлом (MSDN, Adobe), таким образом, я надеялся, что уже существует что-то там вместо того, чтобы иметь необходимость сделать один в доме (и изучить Java и/или ActiveX)
Я говорю, что щелчок однажды установил менеджер загрузок, подобный MSDN.
Но становление CDN без большего количества оптимизированного протокола для задания не является никакой легкой задачей. Я не могу вообразить бизнес-модель, которая может достаточно стоить, чтобы иметь такие большие загрузки файла как ключевая компетенция, если Вы не делаете что-то как MSDN. При создании толстого клиента Вы, по крайней мере, получаете шанс получить еще некоторое время личного контакта с пользователями для рекламы или некоторой другой модели дохода, так как Вы будете, вероятно, платить в сотнях тысяч долларов для хостинга такого сервиса.
Что относительно того, чтобы говорить "Мы рекомендуем установить менеджера по Бесплатной загрузке для загрузки этого файла. Вы будете обладать дополнительным преимуществом способности возобновить файл и ускорить загрузку".
Лично я никогда ничего не загружаю с помощью созданного в инструменте загрузки браузера, если я не имею к (например, вложения Gmail)
Несколько идей:
Можно ли разделить файлы на части и затем воссоединиться ли с ними после загрузки?
Не используйте ActiveX... Я так сыт по горло сайтами, которые только видимы в IE.
Мое фактическое предпочтение, как пользователь, в этих ситуациях должен загрузить легкий .exe файл, который загружает файл для Вас.
Если Вы не хотите писать внутренний код Java, существуют коммерческие доступные решения для апплета:
У них обоих есть версии оценки, которые можно загрузить и протестировать.
Уже было несколько веб-версий (bitlet, w3btorrent), и Azureus был создан с помощью Java, таким образом, это определенно возможно.
Править: @TonyB - ограниченный для портирования 80?
@travis
К сожалению, Это должно быть по HTTP в пользовательском браузере. Я обновлю вопрос больше согласиться с этим.