Фоновая служба в Android - нужна помощь - PullRequest
3 голосов
/ 28 июня 2011

Мне нужна помощь или предложения относительно справочных услуг.

Ну, я хочу этого добиться. У меня есть приложение с некоторыми представлениями, которое также имеет фоновую службу, которая всегда работает.

В моих представлениях есть кнопка, когда я нажимаю эту кнопку, эта кнопка передает некоторые файлы в фоновую службу, и моя фоновая служба загружает этот файл на некоторый сервер.

Я закончил процесс загрузки. Теперь я хочу знать, как я могу создать Фоновую службу, которая всегда работает, и при нажатии кнопки она отправляет файл в службу.

Я новичок в реализации Фонового сервиса.

Пожалуйста, направьте Друзья с некоторыми учебниками, предложениями или рекомендациями.

Спасибо большое

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Вы, вероятно, уже читали некоторую документацию по сервису Android, но я предлагаю изучить ее дальше и посмотреть пример локальной службы, если вы этого еще не сделали:

http://developer.android.com/reference/android/app/Service.html

Похоже, что вы уже запустили свою Службу и работаете, и я думаю, что реальная проблема, которую вы сейчас пытаетесь решить, - это как передать данные из вашей Деятельности в вашу Службу. Когда ваша активность связана со службой, которая является частью того же приложения, эта служба находится в том же процессе и работает в том же основном потоке пользовательского интерфейса, поэтому, как только вы получите объект IBinder из службы после связывания с ним, вы можете просто напрямую вызовите функции в этой службе из вашей деятельности. Точно так же вы можете передать вашей службе объект-обработчик из вашей деятельности, чтобы служба могла отправлять сообщения или публиковать Runnables в вашу деятельность. Связь с локальным сервисом, следовательно, довольно проста.

Так что, если вы посмотрите на Образец локальной службы по ссылке выше, вы увидите раздел кода, где мы получаем ссылку на Службу после завершения привязки:

mBoundService = ((LocalService.LocalBinder)service).getService();

После этого момента можно напрямую вызывать методы той службы, которая находится в том же приложении. Например, у вас может быть метод sendFile в вашей службе. В своей деятельности вы можете сделать что-то вроде:

mBoundService.sendFile( myStuffObject );

В отношении переполнения стека существует довольно много вопросов, касающихся обмена данными между Деятельностью и Сервисом, и я думаю, что вам будет полезно поискать и прочитать их.

3 голосов
/ 28 июня 2011

Стандартный сервис Android прекрасно подойдет в этом случае.Он будет продолжать работать в фоновом режиме, пока его работа не будет завершена или пока вы не попросите его остановить.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

2 голосов
/ 28 июня 2011

вы должны пойти на Android Сервис , который используется для фоновой работы. Внутри сервиса вы должны использовать TimerTask, который будет проверять очередь каждые x секунд, и когда какие-либо элементы будут присутствовать в очереди, он извлечет элемент и загрузит его на сервер. вот ссылка на Android Сервис .. http://developer.android.com/reference/android/app/Service.html

Ссылка на очередь. http://developer.android.com/reference/java/util/Queue.html

...