編輯:Android開發實例
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活動(Activity) - 用於表現功能
服務(Service) - 相當於後台運行的 Activity
廣播(Broadcast) - 用於發送廣播
廣播接收器(BroadcastReceiver) - 用於接收廣播
Intent - 用於連接以上各個組件,並在其間傳遞消息
BroadcastReceiver
在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發送出來的Broadcast進行過濾接受並響應的一類組件。下面將詳細的闡述如何發送Broadcast和使用BroadcastReceiver過
濾接收的過程:
首先在需要發送信息的地方,把要發送的信息和用於過濾的信息(如Action、Category)裝入一個Intent對象,然後通過調用Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把Intent對象以廣播方式發送出去。
當Intent發送以後,所有已經注冊的BroadcastReceiver會檢查注冊時的IntentFilter是否與發送的Intent相匹配,若匹配則就會調用BroadcastReceiver的onReceive()方法。所以當我們定義一個BroadcastReceiver的時候,都需要實現onReceive()方法。
注冊BroadcastReceiver有兩種方式:
一種方式是,靜態的在AndroidManifest.xml中用<receiver>標簽生命注冊,並在標簽內用<intent-filter>標簽設置過濾器。
另一種方式是,動態的在代碼中先定義並設置好一個 IntentFilter對象,然後在需要注冊的地方調Context.registerReceiver()方法,如果取消時就調用Context.unregisterReceiver()方法。如果用動態方式注冊的BroadcastReceiver的Context對象被銷毀時,BroadcastReceiver也就自動取消注冊了。
另外,若在使用sendBroadcast()的方法是指定了接收權限,則只有在AndroidManifest.xml中用<uses-permission>標簽聲明了擁有此權限的BroascastReceiver才會有可能接收到發送來的Broadcast。
同樣,若在注冊BroadcastReceiver時指定了可接收的Broadcast的權限,則只有在包內的AndroidManifest.xml中用<uses-permission>標簽聲明了,擁有此權限的Context對象所發送的Broadcast才能被這個BroadcastReceiver所接收。
動態注冊:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(String);--為BroadcastReceiver指定action,使之用於接收同action的廣播registerReceiver(BroadcastReceiver,intentFilter);
一般:在onStart中注冊,onStop中取消unregisterReceiver
發送廣播消息:extends Service
指定廣播目標Action:Intent Intent = new Intent(action-String)
--指定了此action的receiver會接收此廣播
需傳遞參數(可選) putExtra();
發送:sendBroadcast(Intent);
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android的允許通過添加不同種類的處理圖像效果。可以輕松地應用圖像處理技術來增加某些種類的圖像效果。這些影響可能是亮度,黑暗中,灰度轉換等Android提供了Bitm