Android連載23-跨程式廣播、有序廣播

来源:https://www.cnblogs.com/ruigege0000/archive/2020/07/07/13258557.html
-Advertisement-
Play Games

一、跨程式發送廣播 廣播是一種可以跨進程的通信方式; 我們來寫一個發送有序廣播的項目 首先先建立一個BroadcastTest3項目 然後寫一個接收廣播的類,繼承自BroadcastReceiver package com.example.broadcasttest3; import android ...


一、跨程式發送廣播

  • 廣播是一種可以跨進程的通信方式;
  • 我們來寫一個發送有序廣播的項目
  • 首先先建立一個BroadcastTest3項目
  • 然後寫一個接收廣播的類,繼承自BroadcastReceiver
package com.example.broadcasttest3;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AnotherBroadcastReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context,Intent intend) {
  Toast.makeText(context, "receive in AnotherBroadcastReceiver",Toast.LENGTH_SHORT).show();
 }
}
  • 然後在AndroidManifest.xml文件中註冊該類
    <application
    ...................省略代碼...................
        <receiver android:name=".AnotherBroadcastReceiver">
            <intent-filter>
                <action android:name="com.example.broadcasttest.MY_BROADCAST" />
            </intent-filter>
        </receiver>
    </application>
  • 可以看到該類接受的是com.example.broadcasttest.MY_BROADCAST的廣播
  • 接下來我們安裝好這個項目2
  • 我們回到項目1,點擊send broadcast按鈕,會出現
    23.1
  • 然後緊接著會出現另一個項目的提示
    23.2
  • 這就證明瞭我們應用程式發出的廣播是可以被其他程式所接收到的。

註意:com.example.broadcasttest.MY_BROADCAST的廣播已經在第一個項目的Androidmanifest.xml文件中定義好了。

二、發送有序廣播

  • 我們聚焦回項目1
  • 接下來我們發送有序廣播,首先先修改觸發廣播的方法,在MainActivity.java
//將sendBroadcast(intent);修改為如下有序廣播的方法
sendOrderedBroadcast(intent,null);
  • 該方法首先傳入intent,第二個參數是與許可權相關的字元串,這裡傳入null即可
  • 然後給我們的項目1的AndroidManifest.xml中文件添加優先順序,代表項目1,在項目2之前獲得該廣播
        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter android:priority="100">
                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
            </intent-filter>
        </receiver>
  • 其實添加了一個屬性而已android:priority="100"
  • 當然這個項目1,也可以截斷這個廣播不讓它繼續傳播,修改接收類MyBroadcastReceiver
 public void onReceive(Context context,Intent intent) {
  Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
  abortBroadcast();
 }
  • 也就是多加了一個截斷方法而已

三、使用本地廣播

  • 我們上面介紹的都是全局廣播,所有程式都可以接收,所以會有安全性問題,同時也容易形成垃圾廣播
  • android給我們提供了只在本程式里發送接收的廣播,使用LocalBroadcastManager來管理
  • 我們下次連載再進行修改代碼。

四、源碼:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Spark TempView和GlobalTempView的區別 TempView和GlobalTempView在spark的Dataframe中經常使用,兩者的區別和應用場景有什麼不同。 我們以下麵的例子比較下兩者的不同。 from pyspark.sql import SparkSession ...
  • MySQL資料庫簡介 MySQL近兩年一直穩居第二,隨時有可能超過Oracle計晉升為第一名,因為MySQL的性能一直在被優化,同時安全機制也是逐漸成熟,更重要的是開源免費的。 MySQL是一種關係資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並 ...
  • Spark 分組取Top N運算 大數據處理中,對數據分組後,取TopN是非常常見的運算。 下麵我們以一個例子來展示spark如何進行分組取Top的運算。 1、RDD方法分組取TopN from pyspark import SparkContext sc = SparkContext() 準備數據 ...
  • MySQL實驗 內連接優化order by+limit 以及添加索引再次改進 在進行子查詢優化雙參數limit時我萌生了測試更加符合實際生產需要的ORDER BY + LIMIT的想法,或許我們也可以對ORDER BY + LIMIT 也進行適當優化 實驗準備 使用MySQL官方的大資料庫emplo ...
  • MySQL實驗 子查詢優化雙參數limit 沒想到雙參數limit還有優化的餘地,為了親眼見到,今天來親自實驗一下。 實驗準備 使用MySQL官方的大資料庫employees進行實驗,導入該示例庫見此 準備使用其中的employees表,先查看一下表結構和表內的記錄數量 mysql> desc em ...
  • mariadb的主從複製集群,預設情況下是把主庫上的所有庫進行複製,只要在主庫上產生寫操作,從庫基於主庫的二進位日誌做重放,從而實現把主庫的上的庫表複製到從庫;複製過濾器指的是我們僅複製一個或幾個資料庫相關的數據,而非所有;過濾器的作用就是來定義我們要複製那些庫,那些表,這種定義過濾器的方式叫白名... ...
  • SQL語言大致分為`DCL`、`DDL`、`DML`三種,本文主要介紹`MySQL 5.7`版本的`DCL`語句。 ...
  • 本文更新於2019-06-23,使用MySQL 5.7,操作系統為Deepin 15.4。 SQL語句 創建存儲過程或函數 創建存儲過程: CREATE PROCEDURE name ({[IN|OUT|INOUT] param type}[, ...]) [characteristic] body ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...