四大天王之一BroadCast广播

来源:互联网 发布:linux mint 18评测 编辑:程序博客网 时间:2024/04/27 17:02

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

}

今天就讲到这里了,广播的三种实现方式,虽然简单,但很实用。晚安,明天又是新的开始。



0 0
原创粉丝点击