您的位置:首页 > 移动开发 > Android开发

Android LocalBroadCastManager简介

2016-08-05 20:59 295 查看
LocalBroadCastManager也是广播的一种,但不同的是BroadCastReceiver用于不同进程间通信,总体来说适用于安全性要求不太高的数据传递,而LocalBroadCastManager适用于应用内部的信息传递,又称之为局部通知管理器。

LocalBroadCastManager在android-support-v4.jar(这个相信大家都不陌生)中引入,有效率高,安全性高,可代替Thread与Handle组合刷新UI等优点。

示例代码:
public class MainActivity extends Activity {

/**
*  定义三个Action状态
*/
static final String ACTION_STARTED = "com.example.android.supportv4.STARTED";
static final String ACTION_UPDATE = "com.example.android.supportv4.UPDATE";
static final String ACTION_STOPPED = "com.example.android.supportv4.STOPPED";

LocalBroadcastManager mBroadCastManager;
BroadcastReceiver mBroadCastReceiver;
TextView mTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

init();
}

private void init(){
mTextView = (TextView) this.findViewById(R.id.showText);
mBroadCastManager = LocalBroadcastManager.getInstance(this);

IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_STARTED);
filter.addAction(ACTION_UPDATE);
filter.addAction(ACTION_STOPPED);

mBroadCastReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ACTION_STARTED)){

mTextView.setText("Start !");

} else if(intent.getAction().equals(ACTION_UPDATE)){

mTextView.setText(intent.getExtras().get("update").toString());

} else if(intent.getAction().equals(ACTION_STOPPED)){

mTextView.setText("Stoppppp !");

}

}
};

/**
* 注册LocalBroadCastManager
*/
mBroadCastManager.registerReceiver(mBroadCastReceiver,filter);

/**
* 开启线程传递数据
*/
new Thread(new Runnable() {
@Override
public void run() {

Intent myIntent = new Intent(ACTION_UPDATE);
myIntent.putExtra("update","LaLaLa");

mBroadCastManager.sendBroadcast(myIntent);
}
}).start();
}

@Override
protected void onStop() {
super.onStop();
/**
* 取消LocalBroadCastManager
*/
mBroadCastManager.unregisterReceiver(mBroadCastReceiver);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  broadcastreceiver