android50廣播
1. android 什麼時候用到廣播
1.正常情況下我們選擇handler消息機制來進行單向的線程間的通信;(工作線程向主線程發送消息)
因為主線程有現成的handler,而工作線程沒有現成的handler,這樣的話,主線程將handler交給工作線程而讓工作線程將工作的結果交給主線程;
相反,工作線程中沒有現成的handler(事實上是沒有消息隊列,也就是handler沒有綁定到工作線程),那麼,如果開辟的話,代碼角度上是挺麻煩的(相對應廣播機制來說);
2.廣播機制本身就是雙向的(工作線程向主線程發送廣播,主線程向工作線程發送廣播);
另外,對於像一個activity中通過fragment來進行界面的處理; 我們大多數情況下是採用廣播的機制來實現fragment中adapter的數據的更新;這樣做主要是考慮到工作線程的任務載入完成,而具體的對應刷新的activity可能還沒有啟動;
另外,基於介面隔離原則,如果用handler進行通信的話,則不能很好的滿足這一原則
2. Android開發中廣播的作用及注冊方式,
廣播是一種運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。廣播既可以在清單文件AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。
3. android中的廣播怎麼使用
廣播操作有兩種
1、發送廣播,就是你自己發送出去一個廣播,讓別人接收
2、接收廣播,這個是自己實現一個廣播接收器,接收那些你自己過濾的廣播,然後處理
具體的代碼實現,可以在網上找找
4. android有序廣播和無序廣播的區別
BroadcastReceiver所對應的廣播分兩類:普通廣播和有序廣播。
普通廣播:通過Context.sendBroadcast()方法來發送,它是完全非同步的。
所有的receivers(接收器)的執行順序不確定,因此所有的receivers(接收器)接收broadcast的順序不確定。
這種方式效率更高,但是BroadcastReceiver無法使用setResult系列、getResult系列及abort(中止)系列API
有序廣播:是通過Context.sendOrderedBroadcast來發送,所有的receiver依次執行。
BroadcastReceiver可以使用setResult系列函數來結果傳給下一個BroadcastReceiver,通過getResult系列函數來取得上個BroadcastReceiver返回的結果,並可以abort系列函數來讓系統丟棄該廣播,使用該廣播不再傳送到別的BroadcastReceiver。
可以通過在intent-filter中設置android:priority屬性來設置receiver的優先順序,優先順序相同的receiver其執行順序不確定。
如果BroadcastReceiver是代碼中注冊的話,且其intent-filter擁有相同android:priority屬性的話,先注冊的將先收到廣播。
有序廣播,即從優先順序別最高的廣播接收器開始接收,接收完了如果沒有丟棄,就下傳給下一個次高優先順序別的廣播接收器進行處理,依次類推,直到最後。如果多個應用程序設置的優先順序別相同,則誰先注冊的廣播,誰就可以優先接收到廣播。
這里接收簡訊的廣播是有序廣播,因此可以設置你自己的廣播接收器的級別高於系統原來的級別,就可以攔截簡訊,並且不存收件箱,也不會有來信提示音。
實現方法是:
<receiver Android:name=".SmsReceiver">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
裡面的android:priority="100"就是設定廣播接收器的級別,這個值從1000~-1000,數值越大,優先順序別就越高。
希望幫助到你~~感謝採納
5. android廣播機制的廣播機制的三要素
Android廣播機制包含三個基本要素:廣播(Broadcast) - 用於發送廣播;廣播接收器(BroadcastReceiver) - 用於接收廣播;意圖內容(Intent)-用於保存廣播相關信息的媒介。Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發送出來的Broadcast進行過濾接受並響應的一類組件。
6. android里的廣播和通知有什麼區別
1、廣播
android通過廣播來實現不同進程間的通信;對應於廣播(broadcat)還有一個廣播接收器(broadcast receiver);每個廣播指定了對應的action 、 type等信息,每個接收器根據這些信息來過濾是否自己要接收的廣播
2、通知
Notification是Android中常用的一種通知方式,當有未讀簡訊或者未接電話的時候,屏幕的狀態欄就會有提示圖標,這時可以下拉狀態欄來讀取通知。在使用微信的時候(微信在後台運行),如果有新消息時便會發出聲音提示,狀態欄也有相應的微信提示
3、安卓中廣播和通知的關系
廣播是接收請求,通知是把處理結果告訴用戶
7. android 面試題
1、前言
6 月 26 日, Google Android 發布了 NDK ,引起了很多發人員的興趣。 NDK 全
稱: Native Development Kit 。下載地址為:
http://developer.android.com/sdk/ndk/1.5_r1/index.html 。
2、誤解
新出生的事物,除了驚喜外,也會給我們帶來一定的迷惑、誤解。
2.1、誤解一: NDK 發布之前, Android 不支持進行 C 開發
在 Google 中搜索 「NDK」 ,很多 「Android 終於可以使用 C++ 開發 」 之類
的標題,這是一種對 Android 平台編程方式的誤解。其實, Android 平台從誕生起,就已
經支持 C 、 C++ 開發。眾所周知, Android 的 SDK 基於 java 實現, 這意味著基於 Android
SDK 進行開發的第三方應用都必須使用 Java 語言。但這並不等同於 「 第三方應用只能使
用 Java」 。在 Android SDK 首次發布時, Google 就宣稱其虛擬機 Dalvik 支持 JNI 編程
方式,也就是第三方應用完全可以通過 JNI 調用自己的 C 動態庫,即在 Android 平台上,
「Java+C」 的編程方式是一直都可以實現的。
當然這種誤解的產生是有根源的:在 Android SDK 文檔里,找不到任何 JNI 方面的
幫助。即使第三方應用開發者使用 JNI 完成了自己的 C 動態鏈接庫( so )開發,但是 so
如何和應用程序一起打包成 apk 並發布?這裡面也存在技術障礙。我曾經花了不少時間,
安裝交叉編譯器創建 so ,並通過 asset (資源)方式,實現捆綁 so 發布。但這種方式只
能屬於取巧的方式,並非官方支持。所以,在 NDK 出來之前,我們將 「Java+C」 的開發
模式稱之為灰色模式,即官方既不聲明 「 支持這種方式 」 ,也不聲明 「 不支持這種方
式 」 。
2.2、誤解二:有了 NDK ,我們可以使用純 C 開發 Android 應用
Android SDK 採用 Java 語言發布,把眾多的 C 開發人員排除在第三方應用開發外
( 注意:我們所有討論都是基於「 第三方應用開發 」 , Android 系統基於 Linux ,系
統級別的開發肯定是支持 C 語言的。 )。 NDK 的發布,許多人會誤以為,類似於 Symbian 、
WM ,在 Android 平台上終於可以使用純 C 、 C++ 開發第三方應用了!其實不然, NDK
文檔明確說明: it is not a good way 。因為 NDK 並沒有提供各種系統事件處理支持,也沒
有提供應用程序生命周期維護。此外,在本次發布的 NDK 中,應用程序 UI 方面的 API 也
沒有提供。至少目前來說,使用純 C 、 C++ 開發一個完整應用的條件還不完備。
3、NDK 是什麼
對 NDK 進行了粗略的研究後,我對 「NDK 是什麼 」 的理解如下:
1、NDK 是一系列工具的集合。
NDK 提供了一系列的工具,幫助開發者快速開發 C (或 C++ )的動態庫,並能自動
將 so 和 java 應用一起打包成 apk 。這些工具對開發者的幫助是巨大的。
NDK 集成了交叉編譯器,並提供了相應的 mk 文件隔離 CPU 、平台、 ABI 等差異,
開發人員只需要簡單修改 mk 文件(指出 「 哪些文件需要編譯 」 、 「 編譯特性要求 」
等),就可以創建出 so 。
NDK 可以自動地將 so 和 Java 應用一起打包,極大地減輕了開發人員的打包工作。
2、NDK 提供了一份穩定、功能有限的 API 頭文件聲明。
oogle 明確聲明該 API 是穩定的,在後續所有版本中都穩定支持當前發布的 API 。
從該版本的 NDK 中看出,這些 API 支持的功能非常有限,包含有: C 標准庫( libc )、
標准數學庫( libm )、壓縮庫( libz )、 Log 庫( liblog )。
G
4、NDK 帶來什麼
1、NDK 的發布,使 「Java+C」 的開發方式終於轉正,成為官方支持的開發方式。
使用 NDK ,我們可以將要求高性能的應用邏輯使用 C 開發,從而提高應用程序的執
行效率。
使用 NDK ,我們可以將需要保密的應用邏輯使用 C 開發。畢竟, Java 包都是可以反
編譯的。
NDK 促使專業 so 組件商的出現。(樂觀猜想,要視乎 Android 用戶的數量)
2、NDK 將是 Android 平台支持 C 開發的開端。
NDK 提供了的開發工具集合,使開發人員可以便捷地開發、發布 C 組件。同時,
Google 承諾在 NDK 後續版本中提高 「 可調式 」 能力,即提供遠程的 gdb 工具,使我
們可以便捷地調試 C 源碼。在支持 Android 平台 C 開發,我們能感覺到 Google 花費了
很大精力,我們有理由憧憬 「C 組件支持 」 只是 Google Android 平台上 C 開發的開端。
畢竟, C 程序員仍然是碼農陣營中的絕對主力,將這部分人排除在 Android 應用開發之外,
顯然是不利於 Android 平台繁榮昌盛的。
8. android中的廣播是什麼意思
android的廣播概念和我們日常生活中的電台有相通之處,空氣中有不同頻段,不同電台的廣播,而android系統中就有對應的電池的電量,來電,簡訊還有例如sd卡拔插等等這些廣播的消息發出,這些消息就對應著用收音機調頻時,不同電台的節目。而我們注冊的廣播就類似於我收聽某個電台的節目,比如一個注冊廣播收聽交通廣播,另一個注冊的廣播收聽音樂廣播,那麼怎麼區分是交通廣播還是音樂廣播呢,這就要通過前一章提到的Intent的action來判斷。
9. 簡述在android中如何發送廣播消息
1.發送廣播
Intent intent = new Intent(BroadcastAction);
Bundle bundle = new Bundle();
bundle.putString("***", SUCCESS);
bundle.putString("FullPathName", mFullPathName);
intent.putExtras(bundle);
sendBroadcast(intent);
2.在Activity中創建一個內部類MyBroadcastReceiver擴展BroadcastReceiver,並在其中實現onReceive方法。
3.在Activity中聲明一個MyBroadcastReceiver類型的成員變數,並注冊:
private MyBroadcastReceiver myBroadcastReceiver;
...
myBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(BroadcastAction);
registerReceiver(receiver, filter);
4.使用完後要記得釋放
unregisterReceiver(receiver);
註:1和2中的 BroadcastAction要是同一個Action
10. Android 5.0 以後對發廣播做了哪些限制和改動
不能使用setAction();了,只能用Intent intent = new (this,OtherClass.class);