Android Service 상세 설명 및 예시 코드

9113 단어 AndroidService
Android 서비스 상세 설명:
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");
  }
}
이상 은 안 드 로 이 드 서비스 에 대한 소개 입 니 다.추 후 관련 자 료 를 계속 보충 하 겠 습 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기