1. 程式人生 > >Android應用是否可以只有一個Service或Broadcast Reciver,而沒有Activity?【轉】

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

來自:http://blog.csdn.net/pku_android/article/details/7329080

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. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. publicclass LaunchReceiver extends BroadcastReceiver  
  6. {  
  7.     @Override
  8.     publicvoid onReceive(Context context, Intent intent)  
  9.     {  
  10.         Intent intent1 = new Intent(context , MyService.class);  
  11.         // 啟動指定Server
  12.         context.startService(intent1);  
  13.     }  
  14. }  
//建立MyService.java  這是定義服務
  1. package ss.pku.edu.cn;  
  2. import android.app.Service;  
  3. import android.content.Intent;  
  4. import android.os.IBinder;  
  5. publicclass MyService extends Service  
  6. {  
  7.     @Override
  8.     public IBinder onBind(Intent intent)  
  9.     {  
  10.         returnnull;  
  11.     }  
  12.     @Override
  13.     publicvoid onCreate()  
  14.     {  
  15.         System.out.println("service create");  
  16.     }  
  17. }  

然後在AndroidManifest.xml  進行新增 許可權和action  
  1. <uses-sdkandroid:minSdkVersion="8"/>
  2. <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  3. <application
  4.     android:icon="@drawable/ic_launcher"
  5.     android:label="@string/app_name">
  6.     <receiverandroid:name=".LaunchReceiver">
  7.         <intent-filter>
  8.             <actionandroid:name="android.intent.action.BOOT_COMPLETED"/>
  9.         </intent-filter>
  10.     </receiver>
  11.     <serviceandroid:name=".MyService">
  12. </service>
  13. </application>


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