Android Service 상세 설명 및 예시 코드
1.서비스의 개념
2.서비스의 생명주기
3.인 스 턴 스:음악 재생 을 제어 하 는 Service
1.서비스의 개념
Service 는 Android 프로그램의 4 대 기본 구성 요소 중 하나 로 Activity 와 마찬가지 로 Context 의 하위 클래스 입 니 다.UI 인터페이스 가 없 을 뿐 배경 에서 실행 되 는 구성 요소 입 니 다.
2.서비스의 생명주기
Service 대상 은 스스로 시작 할 수 없고 특정한 Activity,Service 또는 다른 Context 대상 을 통 해 시작 해 야 합 니 다.시작 하 는 방법 은 두 가지 가 있 습 니 다.Context.startService 와 Context.bindService()입 니 다.두 가지 방식 의 생명 주 기 는 서로 다 르 기 때문에 구체 적 으로 다음 과 같다.
Context.startService 방식 의 생명주기:
시작 할 때 startService C>onCreate()C>onStart()
정지 시 stopService C>onDestroy()
Context.bindService 방식 의 생명주기:
바 인 딩 시 bindService -> onCreate() C> onBind()
해제 시간,unbindService C>onUnbind()C>onDestory()
3.인 스 턴 스:음악 재생 을 제어 하 는 Service
다음은 배경 에서 음악 을 재생 하 는 것 을 제어 할 수 있 는 예 로 방금 배 운 지식 을 보 여 드 리 겠 습 니 다.학생 들 은 이 예 를 통 해 바 인 딩 방식 으로 실행 되 는 Service 가 바 인 딩 대상 이 소 각 된 후에 도 소 각 된 것 을 뚜렷하게 볼 수 있 습 니 다.
다음은 코드 를 다음 과 같이 공유 합 니 다.
1.새로운 프로젝트 의 이름 은 Lesson 14 입 니 다.HelloService,Activity 이름 은 MainHelloService.java 입 니 다.
2,res/layout/main.xml 에서 코드 작성
< ?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" " android:textsize="25sp" android:layout_margintop="10dp">
<button android:text=" " android:textsize="20sp" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="10dp">
</button>
<button android:text=" " android:textsize="20sp" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="10dp">
</button>
<button android:text=" " android:textsize="20sp" android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="10dp">
</button>
<button android:text=" " android:textsize="20sp" android:id="@+id/Button04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="10dp">
</button>
</textview></linearlayout>
3.res 디 렉 터 리 에 raw 디 렉 터 리 를 만 들 고 음악 파일 babayetu.mp3 를 복사 합 니 다.3.Activity 의 같은 디 렉 터 리 에 service 파일 을 새로 만 듭 니 다.MusicService.java
package android.basic.lesson14;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MusicService extends Service {
//
String tag ="MusicService";
//
MediaPlayer mPlayer;
// bindService Service
@Override
public IBinder onBind(Intent intent) {
Toast.makeText(this,"MusicService onBind()",Toast.LENGTH_SHORT).show();
Log.i(tag, "MusicService onBind()");
mPlayer.start();
return null;
}
// unbindService Service
@Override
public boolean onUnbind(Intent intent){
Toast.makeText(this, "MusicService onUnbind()", Toast.LENGTH_SHORT).show();
Log.i(tag, "MusicService onUnbind()");
mPlayer.stop();
return false;
}
// , startService() bindService()
@Override
public void onCreate(){
Toast.makeText(this, "MusicService onCreate()", Toast.LENGTH_SHORT).show();
//
mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu);
//
mPlayer.setLooping(true);
Log.i(tag, "MusicService onCreate()");
}
// startService , onCreate() ,
@Override
public void onStart(Intent intent,int startid){
Toast.makeText(this,"MusicService onStart",Toast.LENGTH_SHORT).show();
Log.i(tag, "MusicService onStart()");
mPlayer.start();
}
//
@Override
public void onDestroy(){
Toast.makeText(this, "MusicService onDestroy()", Toast.LENGTH_SHORT).show();
mPlayer.stop();
Log.i(tag, "MusicService onDestroy()");
}
}
4.MainHello Service.java 의 코드:
package android.basic.lesson14;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainHelloService extends Activity {
//
String tag = "MusicService";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Toast
Toast.makeText(MainHelloService.this, "MainHelloService onCreate", Toast.LENGTH_SHORT).show();
Log.i(tag, "MainHelloService onCreate");
//
Button b1= (Button)findViewById(R.id.Button01);
Button b2= (Button)findViewById(R.id.Button02);
Button b3= (Button)findViewById(R.id.Button03);
Button b4= (Button)findViewById(R.id.Button04);
//
final ServiceConnection conn = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Toast.makeText(MainHelloService.this, "ServiceConnection onServiceConnected", Toast.LENGTH_SHORT).show();
Log.i(tag, "ServiceConnection onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName name) {
Toast.makeText(MainHelloService.this, "ServiceConnection onServiceDisconnected", Toast.LENGTH_SHORT).show();
Log.i(tag, "ServiceConnection onServiceDisconnected");
}};
//
OnClickListener ocl= new OnClickListener(){
@Override
public void onClick(View v) {
// intent Service
Intent intent = new Intent(MainHelloService.this,android.basic.lesson14.MusicService.class);
switch(v.getId()){
case R.id.Button01:
//
startService(intent);
break;
case R.id.Button02:
//
stopService(intent);
break;
case R.id.Button03:
//
bindService(intent,conn,Context.BIND_AUTO_CREATE);
break;
case R.id.Button04:
//
unbindService(conn);
break;
}
}
};
//
b1.setOnClickListener(ocl);
b2.setOnClickListener(ocl);
b3.setOnClickListener(ocl);
b4.setOnClickListener(ocl);
}
@Override
public void onDestroy(){
super.onDestroy();
Toast.makeText(MainHelloService.this, "MainHelloService onDestroy", Toast.LENGTH_SHORT).show();
Log.i(tag, "MainHelloService onDestroy");
}
}
이상 은 안 드 로 이 드 서비스 에 대한 소개 입 니 다.추 후 관련 자 료 를 계속 보충 하 겠 습 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.