Android 学习笔记 BroadcastReceiver广播...
PS:不斷提升自己,是件好事...
學習內容:
1.BroadcastReceiver的使用..
2.通過BroadcastReceiver去啟動Service...
?
1.BroadcastReceiver...
? 廣播接收者,用來接收系統和應用中的廣播...Android廣播機制用的地方還是很多的,比如說:當網絡狀態發生改變的時候,通過接收這條廣播就能及時做出相應的響應,然后完成一些操作..這就是廣播的機制...它自身并不實現圖形用戶界面...只是一個觸發性的操作...
? 使用廣播是需要幾個步驟的...
i.那就是建立一個類來實現一個廣播,再類中定義響應的方法...來完成一些響應的操作...
ii.廣播這個東西是需要注冊的,不進行注冊是無法使用的....
注冊的方式有兩種:
??????????????? 一種是靜態注冊,靜態注冊就是配置AndroidManifest.xml文件進行配置,由系統管理receiver,屬于常駐型的...
<!--這段代碼添加在application之間就可以了。。。--> <receiver android:name=".MyBroadcast"android:enabled="true"><intent-filter><action android:name="android.intent.action.EDIT"/></intent-filter> </receiver>????????????????????????? 二種則是動態注冊...屬于非常駐型的,并且隱藏在代碼塊之間...不容易發現...
private BroadcastReceiver receiver;receiver=new CallReceiver(); //動態注冊廣播地址... registerReceiver(receiver,new IntentFilter("android.intent.action.EDIT")); //解除注冊的廣播地址,一定要對廣播機制進行注銷... unregisterReceiver(receiver);iii.注冊完成后就是進行發送廣播了...這樣廣播接收者就可以正常工作了...先構建一個Intent對象,然后調用sendBroadcast(Intent)方法將廣播發出...
??? 還有一點就是,對象調用了onReceive()方法時廣播才是有效的,當從這個函數返回之后,這個對象就無效了..因此廣播的生命周期是非常短暫的,也就僅僅十幾秒的生命周期,因此不要在其中加入一些耗時的操作,耗時的操作可以交給Service去完成,廣播就是完成一些非常小的操作就可以了...粘一個代碼...
上面就是定義一個廣播接收類,它繼承于BroadcastReceiver,在其中完成一些相應的操作....
? 這個就是如何在MainActivity中調用廣播接收者,很簡單的一個動作,就是觸發按鈕,然后會在屏幕上輸出"aa"這條信息...很簡單的一個操作,布局文件就一個按鈕,沒必要去粘貼...重要的是理解一下這個過程,不要忘了使用BroadcastReceiver時一定要進行注冊,否則是不能進行使用的....
2.如何使用BroadcastReceiver去啟動Service...
? 前面已經說過,BroadcastReceiver對象的生命周期是非常短暫的...那么耗時的動作是無法在這里執行的,但是我們可以在BroadcastReceiver中去調用Service...讓Service去執行耗時的服務...簡單的介紹一下如何去啟動Service...
i.首先我們先定義一個Service...
package com.example.broadcast_receiver;import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder;public class MyService extends Service{private MediaPlayer media;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate(){super.onCreate();media=MediaPlayer.create(MyService.this, R.raw.a);MyService.this.media.prepare();MyService.this.media.start();media.setLooping(true);}@Overridepublic void onDestroy(){super.onDestroy();}@Overridepublic void onStart(Intent intent,int startId){super.onStart(intent, startId);} }這里我們需要復制一首歌曲到res\raw文件夾下一首歌曲...raw文件夾我們自己進行新建...
???? 這個是廣播類,從廣播的內部去啟動Service.....然后在AndroidManifest.xml文件中的<application>和</application>之間加入代碼<service android:name=".MyService" android:enable="true"/>就搞定了...
? 這樣就完成了在BroadcastReceiver()內部去啟動Service.....
?
?
?
?
?
?
?????????????????
?
總結
以上是生活随笔為你收集整理的Android 学习笔记 BroadcastReceiver广播...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R有序因子和无序因子(4)
- 下一篇: SLB技术原理