[android] 서비스 시작을위한 Android onCreate 또는 onStartCommand

일반적으로 Android 서비스를 만들 때 onCreate메서드를 구현 하지만 마지막 프로젝트에서는 작동하지 않습니다. 구현을 시도했는데 onStartCommand작동하는 것 같습니다.

문제는 서비스를 구현해야 할 때 어떤 방법이 필요한가요? 어떤 방법을 구현해야합니까? onCreate, onStartCommand또는 둘 다? 그리고 각각의 역할은 무엇입니까?



답변

onCreate()Service객체가 인스턴스화 될 때 호출됩니다 (예 : 서비스가 생성 될 때 ). 이 메서드에서 한 번만 수행해야하는 작업을 수행해야합니다 (예 : 일부 변수 초기화 등). 인스턴스화 된 객체 당onCreate() 한 번만 호출 됩니다.

onCreate()실제로 한 번만 초기화하고 싶거나 필요한 경우 에만 구현 하면 됩니다 .

onStartCommand()클라이언트가를 사용하여 서비스를 시작할 때마다 호출 됩니다startService(Intent intent) . 이것은 onStartCommand()여러 번 호출 될 수 있음을 의미합니다 . 클라이언트가 서비스에서 무언가를 요청할 때마다 필요한 작업을이 메서드 에서 수행해야합니다. 이는 서비스가 수행하는 작업과 클라이언트와 통신하는 방법 (또는 그 반대)에 따라 크게 달라집니다.

구현하지 않으면 클라이언트가 전달 onStartCommand()하는 정보를 얻을 수 없으며 서비스가 유용한 작업을 수행하지 못할 수 있습니다.IntentonStartCommand()


답변

서비스는 활동과 동일하게 작동합니다. 서비스associate한 번 원하는 onCreate것은 초기화처럼 진행됩니다.

startService를service 사용 하여이 호출 될 때마다 . onStartCommand호출됩니다. 수행 할 모든 작업을 전달할 수 있습니다. 음악 플레이어와 같이 재생, 일시 중지, 작업 사용 중지

그리고 당신은 operation in service행동을 보내고 그것을 받음으로써 무엇이든 할 수 있습니다.onStartCommand

onCreate 생성자처럼 작동합니다.

짧게 편집

onCreate()를 다시 호출 할 때마다 ServiceWhereas onStartCommand()호출 을 처음 시작할 때만 호출 startService합니다. 음악 재생, 중지, 일시 중지와 같은 작업을 설정할 수 있습니다.

public void onStartCommand()
{
     if(intent.getAction.equals("any.play")
     {
        //play song
     }
     else if(intent.getAction.equals("any.stop")
     {}
}


답변