四大天王之一BroadCast廣播

大家好,今天給大家講的是四大組件之一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();
      }
 }

}

今天就講到這裏了,廣播的三種實現方式,雖然簡單,但很實用。晚安,明天又是新的開始。



發佈了34 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章