標籤:
服務(Service) 是一種在後台運行,沒有介面的組件,由其他組件調用開始。Android 中的服務和 Windows 中的服務是類似的東西,它運行於系統中不容易被使用者發覺,可以使用它開發如監控之類的程式。
服務(Service)的實現
1. 定義一個類EchoService並繼承自Service,重寫 onCreate()、 onStart(Intent intent, int startId)、 onBind(Intent intent)、 onUnbind(Intent intent)、onDestroy() 中需要的方法。
1 package hx.cn.usingservice; 2 3 import android.app.Service; 4 import android.content.Intent; 5 import android.os.IBinder; 6 7 /** 8 * Created by YQ on 2015/11/3. 9 */10 public class EchoService extends Service {11 @Override12 public IBinder onBind(Intent intent) {13 return null;14 }15 16 @Override17 public void onCreate() {18 super.onCreate();19 System.out.println("oncreat()");20 }21 22 @Override23 public void onDestroy() {24 super.onDestroy();25 System.out.println("ondestory()");26 }27 }
2. 在資訊清單檔的 <application> 節點下聲明 <service>。
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="hx.cn.usingservice" > 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:theme="@style/AppTheme" >10 <activity11 android:name=".MainActivity"12 android:label="@string/app_name" >13 <intent-filter>14 <action android:name="android.intent.action.MAIN" />15 16 <category android:name="android.intent.category.LAUNCHER" />17 </intent-filter>18 </activity>19 <service android:name=".EchoService"></service>20 </application>21 22 </manifest>
註:服務不能自己運行,需要通過調 用 Context.startService() 或 Context.bindService() 方法啟動服務。這兩個方法都可以啟動 Service,但是它們的使用場合有所不同。使用 startService() 方法啟用服務,訪問者與服務之間沒有關聯,即使訪問者退出了,服務仍然運行。使用 bindService() 方法啟用服務,訪問者與服務綁定在了一起,訪問者一旦退出,服務也就終止。採用 Context.startService() 方法啟動服務,只能調用 Context.stopService() 方法結束服務,服務結束時會調用 onDestroy() 方法。
3.以下是MainActivity中實現的主要代碼:
1 private Button btn_StartService,btn_StopService; 2 private Intent IntentService; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 IntentService=new Intent(this,EchoService.class); 9 10 btn_StartService=(Button)findViewById(R.id.btn_StartService);11 btn_StopService=(Button)findViewById(R.id.btn_StopService);12 13 btn_StartService.setOnClickListener(this);14 btn_StopService.setOnClickListener(this);15 }16 17 18 19 20 21 22 23 @Override24 public void onClick(View view) {25 switch (view.getId()){26 case R.id.btn_StartService:27 startService(IntentService);28 break;29 case R.id.btn_StopService:30 stopService(IntentService);31 break;32 }
Android四大組件之Service