Service是Android四大組件中與Activity最相似的組件,且它完全具有自己的生命週期,不過與Activity的區別在於,Service一直在後台運行,它沒有使用者介面,所以也不可能與使用者互動。關於程式中Activity與Service的選擇標準是:如果某個程式組件需要在已耗用時間時向使用者呈現某種介面,或者該程式需要與使用者互動,就需要使用Activity,否則就應該考慮Service了。
建立Service:
package com.ye_yun_lin.service;import android.app.Service;import android.content.Intent;import android.os.IBinder;public class TestService extends Service{@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();System.out.println("Service onCreat");}@Overridepublic void onDestroy() {super.onDestroy();System.out.println("Service onDestroy");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("Service onStartCommand");return super.onStartCommand(intent, flags, startId);}}
配置Service:
啟動和停止Service:
package com.ye_yun_lin.service;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.text.style.ClickableSpan;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button startButton;private Button destroyButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);System.out.println("Activity onCreat");startButton=(Button)findViewById(R.id.startbutton);destroyButton=(Button)findViewById(R.id.destroybutton);startButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(MainActivity.this, TestService.class);startService(intent);}});destroyButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(MainActivity.this, TestService.class);stopService(intent);}});}}
點擊三次啟動Service按鈕後,出現以下:
可見,每次Service被建立時會回調onCreate()方法,每當Service被啟動時都會回調onStart()方法----多次啟動已有的Service組件不會回調onCreate方法,但每次啟動都會回調onStartCommand()方法。
上面是Service組件的簡單運用,雖然這個Service什麼都沒幹,但是如果希望這個Service組件做某些事情,那麼在onCreat()或者onStartCommand()方法中定義相關業務代碼即可。
在下一篇文章中,將深入介紹Service。