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. 一個指標實際上可能指向了
UML中靜態與動態檢視的總體介紹
主要的域
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