Android
广播分为两个角色:广播发送者、广播接收器
练习:发送者发送消息给广播接收器,再由接收器发送消息给用户
1.发送者
package com.example.administrator.myapplication;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
public class BroadCastActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broad_cast);
//注册广播接收器,它监听的是action为recevier的广播
registerReceiver(new MyBroadCastRecevier(),new IntentFilter("recevier"));
}
// 按钮监听方法
public void sendBroacast(View view)
{
Intent intent=new Intent();
intent.putExtra("name","张三");
//设置action
intent.setAction("recevier");
//发送广播,只有注册监听的广播接收器才可以接收到
sendBroadcast(intent);
}
}
2.自定义一个广播接收器MyBroadCastRecevier ,集成BroadcastReceiver抽象类,并实现onReceive方法,该方法是接受到广播做的事情,在这个例子中当收到广播时候先Toast一个消息显示已经收到广播,然后跳转到用户页面。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadCastRecevier extends BroadcastReceiver {
/**
* 该方法运行在主线程中,不能做太耗时的工作
* @param context
* @param intent
*/
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"正在发布给用户",Toast.LENGTH_SHORT).show();
//跳转别的activity
intent.setClass(context,BroadcastUserActivity.class);
context.startActivity(intent);
}
}
3.用户activity,获取从广播接收器传来的intent
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;
public class BroadcastUserActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broacast_user);
Intent intent=getIntent();//获取intent
String name= intent.getStringExtra("name");//获取intent中的参数
Toast.makeText(this,"我是"+name+",我是广播用户",Toast.LENGTH_LONG).show();//利用Toast显示
}
}