導航:首頁 > 操作系統 > android廣播注冊

android廣播注冊

發布時間:2022-04-23 22:36:23

㈠ 安卓開發 廣播注冊問題

你在androidManifest里靜態注冊的廣播在你的app沒有運行的期間是不會佔用你的app資源的, 它是在android包管理伺服器有一個索引, 當監聽的廣播發出來的時候, 包管理服務會找到你的靜態注冊, 然後喚起你的app, 進入廣播監聽器的onReceive方法, 執行完後廣播監聽器的生命周期也就結束了, 使用的資源被釋放。動態注冊必須是在你的app運行期間要佔用資源, 需要主動釋放, 所以實際上是動態注冊相對來說更占資源。動態注冊的使用場景是,動態注冊的優先順序比靜態注冊的高, 廣播會先發到動態注冊的監聽器, 可以靈活在需要的時候register,不需要的時候unRegister。

㈡ Android靜態注冊廣播和動態注冊廣播的區別

1.動態注冊廣播不是常駐型廣播,也就是說廣播跟隨activity的生命周期。注意: 在activity結束前,移除廣播接收器。
靜態注冊是常駐型,也就是說當應用程序關閉後,如果有信息廣播來,程序也會被系統調用自動運行。
它的生命周期為從回調onReceive()方法開始到該方法返回結果後結束。
2.當廣播為有序廣播時:
1 優先順序高的先接收
2 同優先順序的廣播接收器,動態優先於靜態
3 同優先順序的同類廣播接收器,靜態:先掃描的優先於後掃描的,動態:先注冊的優先於後注冊的。

㈢ android中注冊廣播有幾種方式,這些方式的優缺點,談談android引入廣播的用意

2種方式
1.在androidmainfest.xml中注冊
2.<receiver>
3. <intent-filter>
4. <action android:name = "android.intent.action.PICK"/>
5. </intent-filter>
6.</receiver>
7.缺點:常駐型,占資源比較大
8.
9.registerReceiver(receiver,filter); BroadcastReceiver更新UI一般用這種方法

㈣ android 內部類的廣播 怎麼注冊常駐型廣播

在AndroidManifest.xml文件中的<application>節點里進行訂閱,比如和開機廣播
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

㈤ Android開發中廣播的作用及注冊方式,

廣播是一種運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。廣播既可以在清單文件AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。

㈥ android 注冊廣播有多少種方式

有兩種注冊廣播方式:
1.常駐型廣播
常駐型廣播,當應用程序關閉了,如果有廣播信息來,寫的廣播接收器同樣的能接收到,它的注冊方式就是在應用程序的AndroidManifast.xml 中進行注冊,這種注冊方式通常又被稱作靜態注冊。這種方式可以理解為通過清單文件注冊的廣播是交給操作系統去處理的。示例代碼如下:
AndroidManifest.xml中配置廣播

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="spl.broadCastReceiver"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".BroadCastReceiverActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<!--廣播注冊、name裡面填寫廣播類的路徑-->
<receiver android:name=".SmsBroadCastReceiver">
<intent-filter android:priority="20">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

</application>

<uses-sdk android:minSdkVersion="7" />

<!-- 許可權申請 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

</manifest>

2.非常駐型廣播
非常駐型廣播,當應用程序結束了,廣播自然就沒有了,比如在 Activity 中的 onCreate 或者 onResume 中注冊廣播接收者,在 onDestory 中注銷廣播接收者。這樣廣播接收者就一個非常駐型的了,這種注冊方式也叫動態注冊。這種方式可以理解為通過代碼注冊的廣播是和注冊者關聯在一起的。比如寫一個監聽 SDcard 狀態的廣播接收者:
package cn.sunzn.mosecurity.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Environment;

public class SDcard extends Activity {
SdcardStateChanageReceiver sdcardStateReceiver;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sdcardStateReceiver = new SdcardStateChanageReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addAction(Intent.ACTION_MEDIA_EJECT);
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addDataScheme("file");
registerReceiver(sdcardStateReceiver, filter);
}

protected void onDestroy() {
unregisterReceiver(sdcardStateReceiver);
}

class SdcardStateChanageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
checkSDCard();
}

public void checkSDCard() {
String state = Environment.getExternalStorageState();
System.out.println(state);
if (state.equals(Environment.MEDIA_REMOVED) || state.equals(Environment.MEDIA_UNMOUNTED)) {
System.out.println("SDCard 已卸載!");
}
}
}
}

㈦ android注冊廣播有幾種方式

注冊方式有兩種:
1、靜態注冊,就是在manifest文件里配置一下,這種方式注冊的廣播屬於系統級廣播。你的應用沒打開也能收到廣播。比如你要做一個收到某廣播就啟動你的應用的功能可以這樣搞。
2、動態注冊,在代碼里執行一個rigisterBroadcastReciver(可能拼寫有誤)的方法。這種你要自己作好反注冊。這種廣播可以做成你的應用啟動後才監聽,關閉後就不監聽的效果。

㈧ android 廣播怎麼判斷是否已注冊

Android中實現判斷一個BroadcastReceiver是否已經注冊
使用代碼進行訂閱

在AndroidManifest.xml文件中的節點里進行訂閱:

注冊完之後即可以發送廣播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來實現,接收端代碼:

㈨ 12、注冊廣播有幾種方式,這些方式有何優缺點請談談Android引入廣播機制的用意。

  1. 注冊廣播的分類:靜態注冊和動態注冊。

    靜態注冊:在清單文件里直接注冊,從app開啟到app銷毀,一直在接收廣播,接收廣播時間長,但是接收廣播的優先順序低於動態注冊廣播。

    動態注冊:動態注冊,動態銷毀,從onCreate到取消注冊,期間接收廣播,接收廣播時間是短且可控,接收廣播的優先順序高。例如:

    發送廣播:
    Intent i = new Intent();
    i.setAction("ACTION_CLOSE");
    sendBroadcast(i);

    接受廣播:
    onCreate(){

    //注冊廣播的接受者
    IntentFilter filter = new IntentFilter();
    filter.addAction("ACTION_CLOSE_ACTIVITY");
    receiver = new InnerReceiver();
    registerReceiver(receiver, filter);
    }

    private class InnerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //TODO 當前Activity接收到廣播 需要做的事情
    }
    }
    }

    //注銷廣播

    @Override
    protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
    }


2.引入廣播的原因:

a) 不同的app之間傳信通用

b)發出一條指定,需要多個Activity都需要有反應


注意:以上僅供參考,如有疑問,請追問,謝謝。

閱讀全文

與android廣播注冊相關的資料

熱點內容
centos開機命令行模式 瀏覽:695
遍歷所有listpython 瀏覽:660
力控加密文件夾 瀏覽:515
如何更改移動伺服器密碼 瀏覽:686
蘋果8p手機加密 瀏覽:749
ipad建文件夾怎麼弄 瀏覽:833
iphone13對wap3加密 瀏覽:555
pdf文件打開失敗 瀏覽:913
dubbo怎麼調用不同伺服器介面 瀏覽:40
全能解壓王app歷史版本 瀏覽:75
優先隊列與拓撲排序演算法 瀏覽:281
pdf轉換formacbook 瀏覽:871
pdf文件內容怎麼編輯 瀏覽:48
134壓縮機排氣溫度多少 瀏覽:256
unity等待編譯後 瀏覽:806
黑鯊手機鎖屏視頻在哪個文件夾 瀏覽:781
wow地圖解壓後怎麼壓縮 瀏覽:823
有pdf卻打不開 瀏覽:461
七星彩軟體app怎麼下載 瀏覽:219
32單片機的重映射哪裡改 瀏覽:818