반응형
안드로이드에서 서비스(Service)는 화면없이 동작하는 프로그램이라고 할 수 있다.
액비티비(Activity)는 화면이 종료되면 응용프로그램이 작동하지않지만 서비스는 백그라운에서 실행되기때문에 화면과 관계없이 동작한다.
일반적으로 서비스는 onStartService()로 요청을 받고 onCreate(), onStartCommand()가 기본적으로 실행되어 서비스가 계속적으로 백그라운드에서 돌게 된다. 서비스 중지 요청을 받게되면 onDestroy()가 호출되어 서비스가 종료되게 된다.
이 서술에 관한 내용은 다음 그림과 같다.
왼쪽은 데몬형식이고, 오른쪽은 원격호출인터페이스 서비스의 경우이다.
Mservice.java
public class Mservice extends Service{ @Override public IBinder onBind(Intent intent){ return null; } @Override public void onCreate(){ android.util.Log.i("서비스 테스트", "onCreate()"); super.onCreate(); } @Override public void onDestroy(){ android.util.Log.i("서비스 테스트","onDestroy()"); mp.stop(); super.onDestroy(); } @Override public void onStartCommand(Intent intent, int flags, int startId){ android.util.Log.i("서비스 테스트","onStartCommand()"); mp = MediaPlayer.create(this. R.raw.song1); mp.setLooping(true); mp.start(); return super.onStartCommand(intent, flags, startId); } }
public class MainActivity extends Activity{ Intent intent; Button btnStart, btnStop; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); setTitle("서비스 테스트 예제"); intent = new Intent(this, Mservice.class); btnStart = (Button)findViewById(R.id.btnStart); btnStop = (Button)findViewById(R.id.btnStop); btnStart.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ startService(intent); android.util.Log.i("서비스 테스트","startService()"); } }); btnStop.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ stopService(intent); android.util.Log.i("서비스 테스트","stopService()"); } }); } }Service가 시작될경우는 startService()를 Service가 정지될경우 stopService()를 넣으면된다. LifteCycle은 startService()->onCreate()->onStartCommand()->stopService()->onDestroy() 순이 된다.
반응형
'IT관련 > Android' 카테고리의 다른 글
안드로이드 진동 효과 사용하기 (0) | 2014.05.25 |
---|---|
안드로이드_Thread이용 타이머만들기(TextView) (0) | 2014.05.22 |
안드로이드_Thread 중지 (0) | 2014.05.22 |
안드로이드를 사용하려면(2) (0) | 2011.10.07 |
안드로이드를 사용하려면(1) (0) | 2011.10.07 |