Как превратить деятельность в сервис в Android? - PullRequest
0 голосов
/ 20 июля 2011

Я новичок в Android, и я написал программу, которая отображает местоположение пользователя Android, а также отправляет его через веб-сервис на сервер. В моем приложении я хотел, чтобы это выполнялось в фоновом режиме, пока на экране отображается список имен и других процессов. Я искал это и обнаружил, что служба может работать в фоновом режиме, и мне было интересно, есть ли у кого-нибудь какие-либо предложения о том, как превратить это в службу?

Ответы [ 2 ]

1 голос
/ 20 июля 2011

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

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

То, что вы хотите, это AsyncTask. AsyncTask - это однопоточный обработчик потоков, который позволяет выполнять интенсивную работу при обновлении интерфейса.

http://developer.android.com/reference/android/os/AsyncTask.html

Если вы хотите делать это постоянно, AsyncTask может не работать. В этом случае вы можете использовать таймеры Java или стандартные потоки Java для обработки непрерывной работы. Просто обратите внимание, что вы НИКОГДА не хотите обновлять интерфейс из любого другого потока, кроме потока пользовательского интерфейса. Это в конечном итоге приведет к сбою приложения.

0 голосов
/ 20 июля 2011

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

...