[android] 서비스 시작을위한 Android onCreate 또는 onStartCommand
일반적으로 Android 서비스를 만들 때 onCreate
메서드를 구현 하지만 마지막 프로젝트에서는 작동하지 않습니다. 구현을 시도했는데 onStartCommand
작동하는 것 같습니다.
문제는 서비스를 구현해야 할 때 어떤 방법이 필요한가요? 어떤 방법을 구현해야합니까? onCreate
, onStartCommand
또는 둘 다? 그리고 각각의 역할은 무엇입니까?
답변
onCreate()
Service
객체가 인스턴스화 될 때 호출됩니다 (예 : 서비스가 생성 될 때 ). 이 메서드에서 한 번만 수행해야하는 작업을 수행해야합니다 (예 : 일부 변수 초기화 등). 인스턴스화 된 객체 당onCreate()
한 번만 호출 됩니다.
onCreate()
실제로 한 번만 초기화하고 싶거나 필요한 경우 에만 구현 하면 됩니다 .
onStartCommand()
클라이언트가를 사용하여 서비스를 시작할 때마다 호출 됩니다startService(Intent intent)
. 이것은 onStartCommand()
여러 번 호출 될 수 있음을 의미합니다 . 클라이언트가 서비스에서 무언가를 요청할 때마다 필요한 작업을이 메서드 에서 수행해야합니다. 이는 서비스가 수행하는 작업과 클라이언트와 통신하는 방법 (또는 그 반대)에 따라 크게 달라집니다.
구현하지 않으면 클라이언트가 전달 onStartCommand()
하는 정보를 얻을 수 없으며 서비스가 유용한 작업을 수행하지 못할 수 있습니다.Intent
onStartCommand()
답변
서비스는 활동과 동일하게 작동합니다. 서비스 로
associate
한 번 원하는onCreate
것은 초기화처럼 진행됩니다.
startService를service
사용 하여이 호출 될 때마다 . onStartCommand
호출됩니다. 수행 할 모든 작업을 전달할 수 있습니다. 음악 플레이어와 같이 재생, 일시 중지, 작업 사용 중지
그리고 당신은 operation in service
행동을 보내고 그것을 받음으로써 무엇이든 할 수 있습니다.onStartCommand
onCreate
생성자처럼 작동합니다.
짧게 편집
onCreate()
를 다시 호출 할 때마다 Service
Whereas onStartCommand()
호출 을 처음 시작할 때만 호출 startService
합니다. 음악 재생, 중지, 일시 중지와 같은 작업을 설정할 수 있습니다.
public void onStartCommand()
{
if(intent.getAction.equals("any.play")
{
//play song
}
else if(intent.getAction.equals("any.stop")
{}
}