Android應用是否可以只有一個Service或Broadcast Reciver,而沒有Activity?

Service是android四大組件中與Activity最相似的組件,都可以代表可執行的程序。

   Service與Activity的區別在於:
  (1)、Service一直在後臺運行,沒有用戶界面。
  (2)、一旦service被啓動之後,就跟Activity一樣。有自己的生命週期。所以可以沒有Activity。
    
    開發service需要兩個步驟:
   (1)、定義一個繼承service的子類
   (2)、在AndroidManifest.xml中配置該Service ,其過程和配置Activity一樣。
 
Service運行有兩種方式:
    【1】、通過Context的startService()方法,通過該方法啓動用Service,訪問者與service之間沒有關聯,即使                訪問者退出了,Service仍然運行。

     【2】、通過Context的bingSerive()方法,使用該方法啓用Service,訪問者和service形成關聯,即綁定在一                  起,訪問退出,Service也退出。
 
 
Broadcast Reciver本質是一種全局的監聽器,它可以用來組件之間相互通信。它用來接收程序所發出的Broadcast intent,與應用啓動Activity,service相同的是:程序啓動Broadcast Reciver也是需要兩個步驟
 
    【1】、創建Broadcast Reciver的Intent
    【2】、調用context的sendBroadcase()或者sendorderBroadcase()方法來啓動制定的BroadcastReciver
 
    在筆者下面所演示的代碼中,將這個service和Broadcast Reciver結合在一起,可以不需要activity。當程序接收一個Broadcast Reciver的時候,就啓動service(service也可以通過activity來啓動)。這個例子就是開機自己啓動服務。開機的時候會進行廣播,我們就將這個廣播進行接收,然後開啓服務!

//創建LaunchReceiver.java 這是廣播接收器

  1. package ss.pku.edu.cn;  
  2.   
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6.   
  7.   
  8. public class LaunchReceiver extends BroadcastReceiver  
  9. {  
  10.     @Override  
  11.     public void onReceive(Context context, Intent intent)  
  12.     {  
  13.         Intent intent1 = new Intent(context , MyService.class);  
  14.         // 啓動指定Server   
  15.         context.startService(intent1);  
  16.     }  
  17. }  

//創建MyService.java  這是定義服務
  1. package ss.pku.edu.cn;  
  2.   
  3.   
  4. import android.app.Service;  
  5. import android.content.Intent;  
  6. import android.os.IBinder;  
  7.   
  8. public class MyService extends Service  
  9. {  
  10.     @Override  
  11.     public IBinder onBind(Intent intent)  
  12.     {  
  13.         return null;  
  14.     }  
  15.     @Override  
  16.     public void onCreate()  
  17.     {  
  18.         System.out.println("service create");  
  19.     }  
  20. }  

然後在AndroidManifest.xml  進行添加 權限和action  

  1. <uses-sdk android:minSdkVersion="8" />  
  2. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  
  3.   
  4. <application  
  5.     android:icon="@drawable/ic_launcher"  
  6.     android:label="@string/app_name" >  
  7.     <receiver android:name=".LaunchReceiver">  
  8.         <intent-filter>  
  9.             <action android:name="android.intent.action.BOOT_COMPLETED"/>  
  10.         </intent-filter>  
  11.     </receiver>  
  12.       
  13.     <service android:name=".MyService">  
  14. t;/service>  
  15.   
  16. </application>  


這樣的話,就可以做到開機的時候運行服務,這種方式,相信大家在開發android的時候,會經常被用到。希望這個小知識點能夠對大家開發android的過程中有所幫助,歡迎大家批評指教。

 

 

本文轉自:http://blog.csdn.net/pku_android/article/details/7329080 

發佈了13 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章