Program/Android Java

Service 사용하기

너구리V 2012. 7. 17. 14:50

Service 사용하기

 

일단은~ activity 안에서 서비스를 시작하는 것과 멈추는 것입니다.

private boolean mToggleService;

 @Override
 public void
 onClick(View v) {
  // TODO Auto-generated method stub

 
 if (R.id.testService == v.getId()) { 
   
if (mToggleService
) {
    startService(
new Intent(this, HelloService.class
));    
   }
   
else 
{
    stopService(
new Intent(this, HelloService.class
));
   }
   
mToggleService = !mToggleService
;   
  }  
 }

 

서비스 클래스를 하나 만듭니다.

new -> class -> Superclass : android.app.Service 로 생성합니다.

그러면 onBind()함수 하나만 있을 것입니다. (이클립스에서)

나머지 콜백함수를 override 합니다.

onCreate(), onStart(), onDestroy()

 

여기서 잠깐!! 서비스의 lifecycle은 조금 다른면이 있습니다.

startService()로 호출될때에는 onCreate()->onStart() 순으로 호출됩니다.

bindservice()로 호출될때에는 onCreate()->onBind() 순으로 호출됩니다. onStart()는 호출되지 않습니다.

 

서비스클래스를 상속받은 클래스입니다. 안에 소스는 없으나

Logcat으로 어느 콜백 함수가 호출 되는지 확인 하실 수 있습니다.

public class HelloService extends Service {

 @Override
 public IBinder onBind(Intent intent) {
 
 // TODO Auto-generated method stub

  Log.i(
"YTKIM:DEBUG - service","onBind()");
  
return
 null;
 }

 @Override
 
public void
 onCreate() {
  
// TODO Auto-generated method stub

  Log.i(
"YTKIM:DEBUG - service","onCreate()");
  
super
.onCreate();
 }

 @Override
 
public void
 onDestroy() {
 
 // TODO Auto-generated method stub

  Log.i(
"YTKIM:DEBUG - service","onDestroy()"); 
  
super
.onDestroy();
 }

 @Override
 
public void
 onRebind(Intent intent) {
  // TODO Auto-generated method stub

  Log.i(
"YTKIM:DEBUG - service","onRebind()");
  super.onRebind(intent);
 }

 @Override
 
public void onStart(Intent intent, int
 startId) {
 
 // TODO Auto-generated method stub

  Log.i(
"YTKIM:DEBUG - service","onStart()");
  super.onStart(intent, startId);
 }

}

원하는 함수에서 Timer나 Thread로 작업하실 수 있을 것입니다.

 

Manifest.xml 파일에 서비스를 추가해야 합니다.

  <service android:name=".HelloService"></service>

반응형