❶ android 能在Service(服務)里發送廣播(Broadcast)嗎詳細介紹一下好嗎謝謝
可以
sendBroadcast這個方法是定義在ContextWrapper里的,而Service是繼承ContextWrapper的。
@Override
public void sendBroadcast(Intent intent) {
mBase.sendBroadcast(intent);
}
發送的時候直接調用
sendBroadcast(new Intent("com.marslei.send_broadcast_in_service"));
❷ Android 第六講 廣播接收器和服務
兩種方式:靜態注冊和動態注冊
動態注冊:
1)動態注冊:需要定義一個繼承自BroadcastReceiver類的子類,該接收器需要在Activity中的onDestroy中注銷
2)靜態注冊:通過在AndroidManifest.xml中配置
兩種廣播形式:有序廣播和無序廣播
1)無序廣播:接受標准廣播的接收器將同時收到廣播消息,非同步執行,沒有先後順序 sendBroadCast
2)有序廣播:sendOrderedBroadCast,按照一定順序先後被接受順序,由priority屬性決定,abortBroadCast中斷廣播
如果只想在本應用中發送和接受廣播,使用LocalBroadcastReceiver來對廣播進行管理
本地廣播不支持靜態注冊
優點 :安全高效
Service是Android中的一種組件,和Activity的級別一致,但不能自己運行,只能後台運行,和其他組件交互,服務必須注冊才能使用
本地服務:服務依附在主線程中,節約資源,主線程死掉服務終止
遠程服務:服務在獨立進程中,靈活性好 ,佔用資源高
兩種服務的啟動模式:
1)start方式:調用者和服務之間沒有關聯,調用者退出不會影響服務,startService啟動服務,如果服務不存在,調用onCreat方法,然後onStartCommand被調用。stopService關閉服務,onDestroy方法被調用
2)bind方式:調用者和服務綁定,調用者退出,服務終止bindService啟動服務,onCreate方法創建服務,onBind方法綁定服務,onUnbind方法解綁,onDestory在服務結束時調用
❸ 在android中服務機制來做什麼發簡訊為什麼需要廣播
Service,後台運行,可交互這樣的一個東西。它跟Activity的級別差不多,但是他不能自己運行,需要通過某一個Activity或者其他Context對象來調用。
什麼時候需要Service呢?比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在後台繼續播放,比如檢測SD卡上文件的變化,再或者在後台記錄你地理信息位置的改變等等,總是藏在後頭的。
Broadcast 實質就是(發送方)並不在意(接收方)接收到廣播時如何處理。Android 中有各式各樣的廣播,各種廣播在Android 系統中運行,當系統/應用程序運行時便會向 Android 注冊各種廣播,Android 接收到廣播會便會判斷哪種廣播需要哪種事件,然後向不同需要事件的應用程序注冊事件,不同的廣播可能處理不同的事件也可能處理相同的廣播事件,這時就需要Android 系統為我們做篩選。
你要了解的是這個方法吧:public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress: 收件人地址
scAddress: 簡訊中心號碼,null為默認中心號碼
sentIntent: 當消息發出時,成功或者失敗的信息報告通過PendingIntent來廣播。如果該參數為空,則發信程序會被所有位置程序檢查一遍,這樣會導致發送時間延長。
deliveryIntent: 當消息發送到收件人時,該PendingIntent會被廣播。p數據在狀態報告的extended data ("p")中。
如果收件人或者信息為空則拋出 IllegalArgumentException 。
❹ android app中的服務為什麼接收不到廣播
你用靜態的方式注冊廣播吧
什麼情況下都可以收到廣播了
如果你在service里動態注冊廣播,是不是你的service已經運行完了與你的廣播解除關系才收不到廣播呢?
那你在onStart里startservice,再發廣播不就行了.
❺ android程序設計中如何注冊server
直接在AndroidManifest 里增加一個service節點即可。
android中Service是薯旅運行在後台的東西,級別與activity差不多。既然說service是運行在後台的服務,那麼它就是不可見的,沒有界面的東西。可以啟動一個服務Service來播放音樂,或者記錄地理信息位置的改變,或者啟動一個服務來運行並一直監聽某種動作。Service和其他組件一樣,都是運行在主線程中,因此不能用它來做耗時的請求或者動作。
服務一般分為兩種:
1:本地服務, Local Service 用於應用程序內部。在Service可以調用Context.startService()啟動,調用Context.stopService()結束。在內部可弊滲以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調租手脊用一次stopService()來停止。
2:遠程服務, Remote Service 用於android系統內部的應用程序之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,並通過那個連接來調用服務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。
❻ android的廣播和service有什麼區別啊
廣播的周期很短,你不能在廣播內做耗時操作,而服務卻能。廣播的作用是幫你傳遞一些通知,例如你寫了一個開機廣播,一旦手機開機,廣播就發一則通知告訴手機(你寫的程序),手機(你寫的程序,某個類,某句代碼)啟動服務,這個時候在服務裡面可以做你想做的耗時操作,例如去請求伺服器,載入數據。廣播和服務的區別就是廣播周期短,不能做耗時操作,服務是長時間連接,可以做耗時操作,例如用服務控制音樂的播放等。廣播需要注冊,有兩種方式,一個在配置文件裡面,一個是代碼注冊、服務是寫一個類繼承服務,然後在裡面寫你的操作,外圍實例化服務,去啟動服務。