歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發教程:Service的簡介和啟動方式

一.Service的簡介

1.Service介紹和作用 Service是Android系統中的四大組件之一,它是一種長生命周期的,沒有可視化界面,運行於後台的一種服務程序。比如我們播放音樂的時候,有可能想邊聽音樂邊干些其他事情,當退出播放音樂的應用,如果不用Service,我 們就聽不到歌了,所以這時候就得用到Service了。   2.Service生命周期 Service的生命周期並不像Activity那麼復雜,它只繼承了onCreate(),onStart(),onDestroy()三個方法,當第一次啟動Service時,先後調用了onCreate(),onStart()這兩個方法,當停止Service時,則執行onDestroy()方法,這裡需要注意的是,如果Service已經啟動了,當我們再次啟動Service時,不會在執行onCreate()方法,而是直接執行onStart()方法。   二.Service的啟動方式 Service的有兩種啟動方式:Context.startService()和Context.bindService(),這兩種方式對Service生命周期的影響是不同的。   1.Context.startService()方式啟動   ①Context.startService()方式的生命周期:
啟動時,startService –> onCreate() –> onStart()
停止時,stopService –> onDestroy() 如果調用者直接退出而沒有停止Service,則Service 會一直在後台運行   Context.startService()方法啟動服務,在服務未被創建時,系統會先調用服務的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前服務已經被創建,多次調用startService()方法並不會導致多次創建服務,但會導致多次調用onStart()方法。采用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務,服務結束時會調用onDestroy()方法。   ②Context.startService()方式啟動 Service的方法:   下面是具體例子:   MainActivity.java  
  1. package com.android.service.activity;  
  2.  
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.  
  10. public class MainActivity extends Activity  
  11. {  
  12.     private Button startBtn;  
  13.     private Button stopBtn;  
  14.     @Override 
  15.     public void onCreate(Bundle savedInstanceState)  
  16.     {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.         startBtn = (Button) findViewById(R.id.startBtn);  
  20.         stopBtn = (Button) findViewById(R.id.stopBtn);  
  21.         //添加監聽器  
  22.         startBtn.setOnClickListener(listener);  
  23.         stopBtn.setOnClickListener(listener);  
  24.     }  
  25.       
  26.     //啟動監聽器  
  27.     private OnClickListener listener=new OnClickListener()  
  28.     {         
  29.         @Override 
  30.         public void onClick(View v)  
  31.         {  
  32.             Intent intent=new Intent(MainActivity.this, ServiceDemo.class);  
  33.             switch (v.getId())  
  34.             {  
  35.             case R.id.startBtn:  
  36.                 startService(intent);  
  37.                 break;  
  38.             case R.id.stopBtn:  
  39.                 stopService(intent);  
  40.                 break;  
  41.             default:  
  42.                 break;  
  43.             }             
  44.         }  
  45.     };  
  ServiceDemo.java  
  1. package com.android.service.activity;  
  2.  
  3. import android.app.Service;  
  4. import android.content.Intent;  
  5. import android.os.IBinder;  
  6. import android.util.Log;  
  7.  
  8. public class ServiceDemo extends Service  
  9. {  
  10.     private static final String TAG="Test";  
  11.       
  12.     @Override 
  13.     //Service時被調用  
  14.     public void onCreate()  
  15.     {  
  16.         Log.i(TAG, "Service onCreate--->");  
  17.         super.onCreate();  
  18.     }  
  19.  
  20.     @Override 
  21.     //當調用者使用startService()方法啟動Service時,該方法被調用  
  22.     public void onStart(Intent intent, int startId)  
  23.     {  
  24.         Log.i(TAG, "Service onStart--->");  
  25.         super.onStart(intent, startId);  
  26.     }  
  27.  
  28.     @Override 
  29.     //當Service不在使用時調用  
  30.     public void onDestroy()  
  31.     {  
  32.         Log.i(TAG, "Service onDestroy--->");  
  33.         super.onDestroy();  
  34.     }  
  35.  
  36.     @Override 
  37.     //當使用startService()方法啟動Service時,方法體內只需寫return null  
  38.     public IBinder onBind(Intent intent)  
  39.     {  
  40.         return null;  
  41.     }  
  42. }  
  43.  
Copyright © Linux教程網 All Rights Reserved