728x90
서비스
사용자 인터페이스 없이 백그라운드에서 실행되는 컴포넌트
- 배경음악 재생
- 웹 사이트에서 주기적으로 데이터를 읽음
- 주기적으로 폰의 사용량 계산
- 애플리케이션의 업데이트를 주기적으로 검사
서비스의 생애주기
- 시작타입의 서비스
- 액티비티와 무관하게 서비스
- startService()메소드 호출에 의해 시작
- 연결타입의 서비스
- 클라이언트-서버 개념
- bindService()메서도 호출로 동작
- 액티비티 종료시 함께 종료되는 성질
서비스의 기초
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int stratld) {
... // 시작 타입 서비스
}
@Override
public Ibinder onBind(Intent intent) {
... // 연결 타입 서비스
}
@Override
public void onCreate() {
... // 서비스의 시작
}
@Override
public void onDestory() {
... // 서비스의 끝
}
}
IntentService 클래스
- 시작 요청이 들어올 때 마다 안드로이드에서 새로운 스레드 자동 생성
- 다중 요청을 동시에 처리할 필요가 없는 경우
실습1
- 배경음악 재생, 중지
// MusicService 클래스
public class MusicService extends Service {
MediaPlayer myplayer;
public IBinder onBind(Intent myintent) {
return null;
}
public void onCreate() {
myplayer = MediaPlayer.create(this, R.raw.song2);
myplayer.setLooping(false);
}
public void onDestory() {
Toast.makeText(this, "MusicService가 중지", Toast.LENGTH_SHORT).show();
myplayer.stop();
}
public int onStratCommand(Intent myintent, int flasgs, int startId) {
Toast.makeText(this, "MusicService가 시작", Toast.LENGTH_SHORT).show();
myplayer.start();
return super.onStartCommand(myintent, flasgs, startId);
}
}
// MainAcivity.java
public class MainActivity extends AppCompatActivity {
Button start, end;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.button);
end = (Button) findViewById(R.id.button2);
start.setOnClickListener((View.OnClickListener) this);
end.setOnClickListener((View.OnClickListener) this);
}
public void onClick(View src) {
switch (src.getId()) {
case R.id.button:
startService(new Intent(this, MusicService.class));
break;
case R.id.button2:
stopService(new Intent(this, MusicService.class));
break;
}
}
}
728x90
'Android Programming' 카테고리의 다른 글
[Android Programming] 카메라 영상 캡처 (0) | 2021.12.05 |
---|---|
[Mobile Programming] 방송 수신자 (0) | 2021.12.04 |
[Mobile Programming] 멀티미디어 데이터 (0) | 2021.11.19 |
[Mobile Programming] 리소스 (0) | 2021.11.19 |
[Mobile Programming] 액티비티와 인텐트 (0) | 2021.11.10 |