非常实用的android动态注册广播并发送以及接收实例

广播是android四大组件之一,很多情况下数据的传递是用过Intent发送,  跳到另外一个Activity就可以接收数据然后更新UI了,但是如果不是跳到另外一个Activity的情况下数据是怎么传递的呢?就需要使用BroadcastReceiver

下面我使用动态注册的方式来注册广播传递数据。


先写一个广播接收器类需要继承BroadcastReceiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class MyBroadcastReceiver extends BroadcastReceiver{

         //onReceive可以接收发送出去的广播数据。
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.e("onReceive", arg1.getStringExtra("data"));
}
}


//下一个Activity类来注册和发送广播

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


public class SendBroadcastActivity extends Activity{


private Button registbtn;
private Button sendbtn;
private MyBroadcastReceiver bcr;//上面写的一个广播接收类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registbtn = (Button) findViewById(R.id.test);
sendbtn = (Button) findViewById(R.id.test3);
registbtn.setText("注册广播");
sendbtn.setText("发送广播");

//动态注册光广播
registbtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bcr = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("myAction");
SendBroadcastActivity.this.registerReceiver(bcr, filter);
}
});

               //开始发送广播
sendbtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

                               if(bcr!=null){

Intent intent = new Intent();
intent.setAction("myAction");
intent.putExtra("data", "Hi!I am broadcastData!");
SendBroadcastActivity.this.sendBroadcast(intent);
}
else{
Toast.makeText(SendBroadcastActivity.this, "请先注册广播", Toast.LENGTH_LONG).show();
}


});
}
}



你可能感兴趣的:(android)