Android Service 簡介

Service是Android系統中的一種組件,它跟Activity的級別差很少,可是它不能本身運行,只能後臺運行,而且能夠和其餘組件進行交互。Service是沒有界面的長生命週期的代碼。Service是一種程序,它能夠運行很長時間,可是它卻沒有用戶界面。這麼說有點枯燥,來看個例子,打開一個音樂播放器的程序,這個時候若想上網了,那麼,咱們打開Android瀏覽器,這個時候雖然咱們已經進入了瀏覽器程序,可是,歌曲播放並無中止,而是在後臺繼續一首接着一首地播放。其實這個播放就是由播放音樂的Service進行控制的。
固然這個播放音樂的Service也能夠中止,例如,當播放列表裏邊的歌曲都結束,或者用戶按下了中止音樂播放的快捷鍵等。Service能夠在不少場合的應用中使用,好比播放多媒體的時候用戶啓動了其餘Activity,這個時候程序要在後臺繼續播放,好比檢測SD卡上文件的變化,再或者在後臺記錄用戶地理信息位置的改變等等。總之服務嘛,老是藏在後頭的。
java

PlayMusicService.javaandroid

package com.supermario.playmusic;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class PlayMusicService extends Service{
    //定義音樂播放器
    private MediaPlayer mMediaPlayer;
    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }    
    @Override
    public void onStart(Intent intent,int startId)
    {
        super.onStart(intent, startId);
        //裝載音樂
        mMediaPlayer=MediaPlayer.create(this, R.raw.demo);
        //開始播放音樂
        mMediaPlayer.start();
    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        //中止播放音樂
        mMediaPlayer.stop();
    }
}

PlayMusicActivity.java瀏覽器

package com.supermario.playmusic;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class PlayMusicActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //開始按鈕
        Button start=(Button)findViewById(R.id.button1);
        //中止按鈕
        Button stop=(Button)findViewById(R.id.button2);
        //用於啓動和中止Service的intent
        final Intent it=new Intent("android.guo.service.playmusic");
        //爲「開始」按鈕綁定監聽器
        start.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //啓動服務
                startService(it);
            }          
        });
        //爲「中止」按鈕綁定監聽器
        stop.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //中止服務
                stopService(it);
            }          
        });
    }
}

main.xmlapp

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="音樂播放器--回到拉薩" />
    <!-- 播放音樂 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="播放" />
    <!-- 中止音樂 -->
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="中止" />
</LinearLayout>

AndroidManifest.xmlide

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.supermario.playmusic"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="10" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".PlayMusicActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".PlayMusicService">
            <intent-filter>
                <action android:name="android.guo.service.playmusic"/>
            </intent-filter>
        </service>
    </application>
</manifest>
相關文章
相關標籤/搜索