본문 바로가기

Android/Service

안드로이드/Android Service 예제

안드로이드/Android Service 예제



Service = Deamon = Background Program 

말그대로 화면없이 뒤에서 실행되는 기능을 말합니다. 예를 들어 음악재생 처럼 다른 작업을 하고 있는 도중에도 계속 노래를 재생해야 하는 작업 등 을 말합니다. 현재 사용자가 화면(Activity) 을 보고 있지 않아도 백그라운드에서 실행 되는 것이 바로 Service 입니다.


Service로 Activity 처럼 생명주기를 가지고 있는데요. 생명주기에 관한 내용은 아래에서 알아보도록 하겠습니다.

아래는 음악을 재생하는 간단한 예제를 만들어 볼텐데요, Android res폴더 하위에 raw라는 폴더를 만들고 재생하고자 하는 goaway.mp3파일을 넣어 줍니다. 이에 대한 접근은 다음처럼 R.raw. goaway  로 가능합니다.

 


TestServiceActivity.java
package arabiannight.tistory.com.service;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class TestServiceActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		Button btn_play = (Button) findViewById(R.id.btn_play);
		btn_play.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				startService(new Intent("arabiannight.tistory.com.service"));
			}
		});    
		
		Button btn_stop = (Button) findViewById(R.id.btn_stop);
		btn_stop.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				stopService(new Intent("arabiannight.tistory.com.service"));
			}
		});  
		
	}
}




ServiceClass.java

package arabiannight.tistory.com.service;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;

public class ServiceClass extends Service{
	
	private MediaPlayer mPlayer = null;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	@Override
	public void onStart(Intent intent, int startId) {
		Log.d("slog", "onStart()");
		super.onStart(intent, startId); 
		mPlayer = MediaPlayer.create(this, R.raw.goaway);
		mPlayer.start();
	}
	
	@Override
	public void onDestroy() { 
		Log.d("slog", "onDestroy()");
		mPlayer.stop();
		super.onDestroy();
	}
}




AndroidManifest.xml


<application>

        <service android:name="ServiceClass">

                <intent-filter>

                       <action android:name="arabiannight.tistory.com.service"/>

                       <category android:name="android.intent.category.DEFAULT"/>

                </intent-filter>

         </service>

</application>





파일첨부


TestService.zip




실행화면







서비스 생명 주기



그림 출처 : http://wandroide.blogspot.com/2010/11/android-service-aidl-broadcast-receiver.html






출처 : http://blog.naver.com/PostView.nhn?blogId=rosaria1113&logNo=93035557&redirect=Dlog&widgetTypeCall=true



서비스 설명 블로그 : http://gtko.springnote.com/pages/5409263.xhtml








'Android > Service' 카테고리의 다른 글

안드로이드/Android Service 사용법  (26) 2012.08.21