大家好,今天給大家講的是四大組件之一BroadCast廣播,廣播是一個沒有界面,需要註冊,依靠Activity界面方可執行廣播的功能,開發中很常用到廣播,比如說,電量不足,短信來電這些通知功能,就需要系統發出廣播,從而功能實現通知。下面給大家講解廣播註冊的三種方式,因爲廣播是沒有界面的,所以就不能上圖了。
第一種方式:靜態註冊
1.androidManifest.xml
<!-- 廣播靜態註冊,註冊一個時間改變的 -->
<receiver
android:name="com.example.broadcast.TimeChange">
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
2.TimeChange.java
//繼承BroadCastReceive
public class TimeChange extends BroadcastReceiver {
//廣播接受者
public void onReceive(Context context, Intent intent) {
//intent.getAction得到廣播進行判斷
if(intent.getAction().equals(Intent.ACTION_TIME_CHANGED)){
Toast.makeText(context, "時間改變了TimeChange", Toast.LENGTH_SHORT).show();
}
}
}
2.第二種方式:動態註冊,Intentfilter--->addAction--->registerReceiver
1.MainActivity.java
//定義MyReceiver
private MyReceiver receiver;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化receiver
receiver = new MyReceiver();
//意圖過濾器
IntentFilter filter = new IntentFilter();
//添加過濾廣播條件
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
//註冊廣播
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
//銷燬廣播
unregisterReceiver(receiver);
super.onDestroy();
}
//廣播接着,繼承BroadCastReceiver
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//得到廣播,進行判斷
if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) {
Toast.makeText(context, "時區改變", Toast.LENGTH_SHORT).show();
}
}
}
}
第三種方式:3.動態註冊自定義註冊:Intent-->intent.setAction()--->intent.getAction()
第三種方式是自定義註冊,添加一個點擊按鈕進行監聽,發廣播。
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//點擊事件
public void send(View v) {
//Intent意圖,實現跳轉
Intent intent = new Intent(MainActivity.this,TimeChange.class);
//自定義setAction,添加新的廣播
intent.setAction("HAHAHA");
//發廣播
sendBroadcast(intent);
}
}
TimeChange.java
//廣播接受者
public class TimeChange extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
//得到新填的廣播
if(intent.getAction().equals("HAHAHA")){
Toast.makeText(context, "哈哈哈", Toast.LENGTH_SHORT).show();
}
}
}
今天就講到這裏了,廣播的三種實現方式,雖然簡單,但很實用。晚安,明天又是新的開始。