Количество раз, когда служба была запущена - PullRequest
1 голос
/ 23 августа 2011

В моем приложении три действия, и для всех этих действий требуется доступ к сервису. Так что, если я запустил сервис три раза, он будет запущен три раза или только один раз. И если однажды предыдущие данные будут удалены при перезапуске службы.

Thanx

Ответы [ 3 ]

5 голосов
/ 23 августа 2011

если вы запускаете службу с startService, то впервые будет вызван метод onCreate, и не имеет значения, сколько раз вы запустили службу, но будет вызываться ее метод onStartCommand(Intent, int, int) относительно вашеговызов startService.Услуга останавливается, когда вы звоните stopService, независимо от того, сколько раз вы звонили startService.

Не забудьте освободить ресурсы, потоки, когда вы остановите сервер.

Вы можете обратиться к этому документу:

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

3 голосов
/ 23 августа 2011

Если служба Android уже запущена, Android больше не запустит службу. Например, позвонив:

Intent intent = new Intent(YourService.class.getName());
startService(intent);

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

com.domain.app
com.domain.app:remote

Удаленная запись - это ваша служба, и она появится только один раз, вы также можете увидеть это в настройках Android, приложениях, запущенных службах на вашем устройстве.

Что касается данных, которые стираются при перезапуске службы, то это сохраняет проблему состояния, любые данные, которые вы хотите пережить при перезапуске (например, уничтожение приложения), должны храниться, см. http://developer.android.com/guide/topics/data/data-storage.html для получения более подробной информации.

0 голосов
/ 23 августа 2011

Вы можете легко проверить, работает ли служба, с помощью следующего кода

public boolean isServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if ("com.example.app.ServiceClassName".equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
} 

Подробнее о жизненном цикле службы можно прочитать здесь: http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...