👾Android/Android_JAVA
📱 모바일프로그래밍 - 서비스 📱
비엔 Vien
2024. 12. 7. 00:11
[서비스]
: 사용자의 인터페이스 없이 백그라운드에서 실행되는 컴포넌트
- 배경음악, 앱의 업데이트를 주기적으로 검사 등
[서비스의 생명주기]
**서비스 추가 방법**
화면이 종료되어도 계속되는 음악서비스
(이 앱에서 나가도 계속된다고)
MainActivity.java
Intent intent;
~~~ OnCreate ~~~
//intent 변수안에 intent 객체 넣어주기
//지금 여기서(현재액티비티) 일어난 일들을 MusicService로 보낼거임
intent = new Intent(this, MusicService.class);
binding.btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//intent에 해당하는 서비스를 시작해라 (즉 MusicService라는 이름의 서비스 시작)
//// MusicService 클래스의 onStartCommand() 메서드가 호출됨
startService(intent);
//서비스가 시작된 시점에 로그남기기
Log.i("Service Test", "startService");
}
});
binding.btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//intent에 해당하는 서비스 멈춤
//// 서비스가 실행 중이면, MusicService 클래스의 onDestroy() 메서드가 호출됨
stopService(intent);
Log.i("Service Test", "stopService");
}
});
MusicService.java
public class MusicService extends Service {
//음악 플레이 객체 추가
MediaPlayer mp;
public MusicService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
//메소드 추가하자
@Override
public void onCreate() {
super.onCreate();
//로그남기기
Log.i("Service Test", "onCreate");
//mp에 mediaplayre 객체 만들기
//this에 Resource/raw/song1연결
mp = MediaPlayer.create(this, R.raw.song3);
//반복하는것은 사실이랍니다(true)
mp.setLooping(true);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("Service Test", "onStart");
//음악시작하기
mp.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Service Test", "onDestroy");
//음악 멈추기
mp.stop();
}
}