2012-12-10 1 views
0

서비스가 백그라운드에서 실행되어야합니다. Android에서 계속 죽이는 동안 계속해서 다시 시작해야합니다. 그리고 프로그래밍 목적 때문에 서비스가 실행 중인지 여부를 알아야합니다. 왜냐하면 나는 두 번째 서비스를 동시에 시작하고 두 번 시작하는 방법을 계속 유지하기 때문입니다.Android : AlarmManager에서 서비스를 시작한 상태에서 서비스가 실행 중인지 어떻게 알 수 있습니까?

지금까지이 시도했습니다

private boolean isServiceRunning() { 
    ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager 
      .getRunningServices(Integer.MAX_VALUE)) { 
     if (NotificationService.class.getName().equals(
       service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

을하지만 난이 알람 관리기 모든 내 서비스를 시작하기 때문에 그게 내 서비스

startService(Intent); 

시작되는 경우에만 가능하며 읽을 때 예를 들어 2 분 서비스가 실행 중인지 확인하는 방법을 모르겠습니다. 서비스 시작 방법을 두 번 이상 피할 수있는 아이디어가 있다면 아마도 만족할 것입니다.

+0

"나는 그것이 안드로이드에 의해 살해 계속하는 동안 다시 다시 시작해야, 백그라운드에서 서비스를 실행해야합니다"- 이상적으로, 당신은에서 영원한 서비스를하려고하지 것이다 처음. "이는 두 번째 서비스를 동시에 시작하기 때문에 두 번 시작하는 방법을 계속 유지합니다. 즉, 실행중인 인스턴스가 하나 밖에 없으므로 가능하지 않습니다. – CommonsWare

+0

나는 당신이 수신기를 보낸 경보 신분증을 받아야한다고 생각합니다. 사실입니까? – Talha

+0

2 분마다 서비스를 시작하는 이유는 무엇입니까? 시간 초과 기능을 구현하는 장기 실행 서비스가 없습니까? – Jayp

답변

0

서비스에서 처음으로 서비스를 만들 때 onCreate() 메서드가 호출됩니다. 에서 모든 선언을 수행 할 수 있습니다.

onStartCommand() 

은 알람 관리자를 통해 호출하려고 할 때 반복해서 호출됩니다.

서비스를 원하지 않으면 다른 프로세스에서 서비스를 실행할 수 있습니다.이 경우 IPC (Inter Process Communication)가 필요합니다. 다음과 같이

는이 일을 위해 당신은 매니페스트 파일에 서비스를 선언

<service 
    android:name="myservice" 
    android:process=":my_process"> 
<service> 

콜론 (:) 안드로이드에 my_process : 공정 라인 프로세스의 이름이 my_process과 안드로이드 시스템을 말 : 그것을 선언하는 응용 프로그램에 대해 비공개임을 나타냅니다.

참조 : complete tutorial on services

+0

나는 당신의 제안을 시도했지만 서비스는 10 분이 지 지나도 여전히 죽습니다. android : process = ": noti_service"로 서비스를 시작했으며, 몇 분 동안 작동 한 다음 죽게됩니다. 나는 뭔가를 추가해야합니까? 그러면 더 나아질 것입니까? – mapodev

관련 문제