1. 程式人生 > >Android廣播的靜態與動態註冊

Android廣播的靜態與動態註冊

  靜態廣播:不用程式啟動就可以接收,可用作開機自啟動(裝置開機時會發送廣播,下面列出幾項廣播的ACTION),當然也能自己設定action的值。
  Intent.ACTION_BOOT_COMPLETED //系統啟動完成
  Intent.ACTION_MEDIA_MOUNTED //SD卡掛載
  Intent.ACTION_MEDIA_UNMOUNTED //SD卡解除安裝
  Intent.ACTION_USER_PRESENT//解除鎖屏
  ConnectivityManager.CONNECTIVITY_ACTION//網路狀態變化

  動態廣播:在程式碼中註冊,程式適應系統變化做操作,動態廣播只有在程式執行狀態下才能接收到。
  Intent.ACTION_SCREEN_ON //螢幕亮時發出的廣播
  Intent.ACTION_SCREEN_OFF //螢幕滅時發出的廣播
  Intent.ACTION_TIME_TICK //時間變化 每分鐘一次發出的廣播

  當然還有很多狀態就不一一列舉了,用到時自行搜尋便是,那就貼一些程式碼吧。
  

  廣播接收器類,用來接收廣播。

package com.example.broadcastrecdemo_v1;

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

public class MyBroadcastRec extends BroadcastReceiver
{

    @Override
public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("com.xwk.brcr")) { Toast.makeText(context, intent.getStringExtra("jt"), Toast.LENGTH_SHORT).show(); } else if (action.equals("com.xwk.dt"
)) { Toast.makeText(context, intent.getStringExtra("dt"), Toast.LENGTH_SHORT).show(); } } }

  介面。
  

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/bnj"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:text="靜態" />

    <Button
        android:id="@+id/bnd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/bnj"
        android:text="動態" />

</RelativeLayout>

  Activityi類。
  

package com.example.broadcastrecdemo_v1;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener
{

    private Button bnj, bnd;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bnj = (Button) findViewById(R.id.bnj);
        bnd = (Button) findViewById(R.id.bnd);
        bnj.setOnClickListener(this);
        bnd.setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
        case R.id.bnj:
            Intent it1 = new Intent();
            it1.setAction("com.xwk.brcr");
            it1.putExtra("jt", "這裡是靜態註冊!");
            sendBroadcast(it1);
            break;
        case R.id.bnd:
            Intent it2 = new Intent();
            it2.setAction("com.xwk.dt");
            it2.putExtra("dt", "這裡是動態註冊!");
            sendBroadcast(it2);
            break;

        default:
            break;
        }
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.xwk.dt");
        registerReceiver(new MyBroadcastRec(), intentFilter);
    }
}

  靜態廣播需在AndroidManifest.xml中註冊。
  

 <receiver android:name=".MyBroadcastRec" >
            <intent-filter>
                <action android:name="com.xwk.brcr" />
            </intent-filter>
        </receiver>

  來看下執行結果。
  這裡寫圖片描述

相關推薦

Android廣播靜態動態註冊

  靜態廣播:不用程式啟動就可以接收,可用作開機自啟動(裝置開機時會發送廣播,下面列出幾項廣播的ACTION),當然也能自己設定action的值。   Intent.ACTION_BOOT_COMPL

android 靜態動態註冊廣播淺析

前言 程式碼優化過程中發現好多app的全域性網路監聽使用動態註冊廣播方式,而沒有采用在清單檔案中進行註冊 產生了疑問,研究開來知識點還是有一些。總結如下 1.廣播的註冊方式 在Android中有兩種方式,即動態註冊(程式碼註冊)、靜態註冊(清單檔

靜態動態庫文件

命令 ops 過去 編輯 shared 加載過程 二進制文件 函數 因此 在windows中靜態庫是以 .lib 為後綴的文件,共享庫是以 .dll 為後綴的文件。在linux中靜態庫是以 .a 為後綴的文件,共享庫是以 .so為後綴的文件。以linux下的靜態庫和動態庫為

spring AOP 代理(靜態動態+使用cglib實現)

一、沒有代理模式 缺點: 1、工作量特別大,如果專案中有多個類,多個方法,則要修改多次。 2、違背了設計原則:開閉原則(OCP),對擴充套件開放,對修改關閉,而為了增加功能把每個方法都修改了,也不便於維護。 3、違背了設計原則:單一職責(SRP),每個方法除了要完成自己本身的功能,還要計算耗時、延時;

Xamarin.Android廣播接收器繫結服務

一、前言 學習了前面的活動與服務後,你會發現服務對於活動而言似乎就是透明的,相反活動對於服務也是透明的,所以我們還需要一中機制能夠將服務和活動之間架起一座橋樑,通過本節的學習,你將會學到廣播與繫結服務,這兩種方式恰恰是解決上面問題的關鍵。 二、簡單的廣播接收器 實現一個最簡單的廣播接收器需要繼承Br

靜態動態apk overlay 機制

靜態Overlay 只對有原始碼的apk起作用,可以修改與增加一般apk資源,對frameworks 資源只能修改,無法新增。 1.  Android平臺Overlay機制 Android overlay 機制允許在不修改packages中apk的情況下,來自定義 fra

JAVA設計模式(三)靜態動態代理模式

  代理模式:為某個物件提供一個代理,以控制對這個物件的訪問。 代理類和委託類有共同的父類或父介面,這樣在任何使用委託類物件的地方都可以用代理物件替代。代理類負責請求的預處理、過濾、將請求分派給委託類處理、以及委託類執行完請求後的後續處理。   通過上面的描述

虛擬函式,靜態動態繫結

正好複習到了這部分,整理一下,主要是翻譯課件。 虛擬函式和指標結合使用可以產生最大的效果。 1. 非虛擬函式是靜態繫結的; 2. 虛擬函式可能(may)是動態繫結的; 3. 一個指標實際上可能指向了

BroadcastReceiver(廣播)的靜態註冊動態註冊 --Android開發

encoding save private tac app tco sta content con BroadcastReceiver是安卓四大組件之一,本例通過代碼的方式演示靜態註冊和動態註冊。 1、靜態註冊 靜態註冊只需要AndroidManifest.xml中進行

(第一行程式碼筆記系列-廣播1)android 廣播動態註冊靜態註冊有什麼區別及基本用法

新建一個BroadcastTest專案,然後修改MainActivity中的程式碼,如下所示: public class MainActivity extends Activity { private IntentFilter intentFilter; private NetworkChange

Android靜態註冊動態註冊廣播的區別

1)靜態註冊:在AndroidManifest.xml註冊,android不能自動銷燬廣播接收器,也就是說當應用程式關閉後,還是會接收廣播。 2)動態註冊:在程式碼中通過registerReceive

Android廣播Receiver動態註冊靜態註冊

廣播接收器註冊一共有兩種形式 : 靜態註冊和動態註冊. 兩者及其接收廣播的區別: 1.動態註冊的廣播 永遠要快於 靜態註冊的廣播,不管靜態註冊的優先順序設定的多高,不管動態註冊的優先順序有多低>\ 2.動態註冊廣播不是 常駐型廣播 ,也就是說廣播跟隨activ

Android小知識-剖析Retrofit前的預備知識(靜態代理動態代理)

本平臺的文章更新會有延遲,大家可以關注微信公眾號-顧林海,包括年底前會更新kotlin由淺入深系列教程,目前計劃在微信公眾號進行首發,如果大家想獲取最新教程,請關注微信公眾號,謝謝! 代理設計模式主要分為靜態代理與動態代理,代理模式的定義是為其他物件提供一種代理,用以控制對這個物件的訪問。打個比方

Android中BroadcastReceiver的兩種註冊方式(靜態動態)詳解

今天我們一起來探討下安卓中BroadcastReceiver元件以及詳細分析下它的兩種註冊方式。 BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和應用中的廣播。在Android系統中,廣播體現在方方面面,例如當開機完成後系統會

Android jni 靜態註冊動態註冊

JNI 開發流程 1.編寫native 方法 2.javah 命令,生成.h 檔案    java_類的全名_方法名    或者自己手寫    3.複製.h 標頭檔案到cpp 工程 4.複製jni.h

Android BroadcastReceiver 的靜態動態註冊及區別

前言 為了方便Android系統各個應用程式及程式內部進行通訊,Android系統引入了一套廣播機制。各個應用程式可以對感興趣的廣播進行註冊,當系統或者其他程式發出這條廣播的時候,對發出的廣播進行註冊的程式便能夠收到這條廣播。為此,Android系統中有一

靜態/動態註冊廣播的區別

廣播接收器註冊一共有兩種形式 : 靜態註冊和動態註冊.兩者及其接收廣播的區別:1.動態註冊廣播不是常駐型廣播,也就是說廣播跟隨activity的生命週期。注意: 在activity結束前,移除廣播接收器

Android開發靜態註冊廣播接收不到的問題的解決辦法

    首先原因是這個:https://zhuanlan.zhihu.com/p/20933603    我採用的解決辦法是將apk放到system/app目錄下詳細過程是這樣的https://blog.csdn.net/xx326664162/article/details

Android廣播機制基礎1---動態註冊監聽的使用,以獲得電池的使用狀態為例

以一個顯示手機電量和電池狀態的Demo為例。 1.要獲得電池的使用狀態,需在AndroidManifest.xml中新增使用許可權: <uses-permission android:name="android.permission.BATTERY_S