【Android开发中用Annotation 10行代码完成广播
2017-12-08 本文已影响62人
NoValue
【Android开发中用Annotation 10行代码完成广播发送接收】
在Android开发中大量的广播,如果用EventBus接收发送广播另当别论,如果用系统自带的广播,要先注册 然后注册Action,最后Destory的时候还要 unregist, 发送广播的地方 还要搞个类 extends BroadCastReicever 非常繁琐,代码越多 越容易出问题,越简单 越容易排错,我一直思考如何 几行代码搞定复杂操作。后来找到了Google早已准备好的 Annotation
注解框架,不到10行搞定发送接收!!立竿见影 效果果然快,代码行数果然少。
我们看看以前的写法比对一下
private BroadcastReceiver mVmcMoneyReceiver = new BroadcastReceiver( ){
@Override
public void onReceive( Context context, Intent intent ){
}
if (TextUtils.equals(action, Action.....)) {
//Action判断
}....
收广播的地方还要先注册、再注销方法调用部分多
IntentFilter filter1 = new IntentFilter(Action. xxxxxxxx);
LocalBroadcastManager.getInstance(context).registerReceiver( filter1);
注销广播
@Override
protected void onPause( ){
super.onPause( );
LocalBroadcastManager.getInstance(this).unregisterReceiver(mVmcOutGoodsReceiver);
LocalBroadcastManager.getInstance(this).unregisterReceiver(mVmcMoneyReceiver);
LocalBroadcastManager.getInstance(this).unregisterReceiver(mVmcPaySucessReceiver);
unregisterReceiver(cardBanReceiver);
unregisterReceiver(cardCanReceiver);
}
比对一下 Annotation的注解写法
需要接受广播的 一行代码搞定
@EActivity
public class MainActivity extends BaseActivity{
直接关注与业务,什么Action??简单明了!!对不需要管他 要注册要unRegist
@Receiver(actions = Schema.ACTION_CHANG_TEXT)
public void onReiverChangeTextAction( ){
tvFirst.setText("哈哈哈 我收到了");
}
直接发广播(另外一个页面)
public void sendBoradCastReceiver( View view ){
Intent intent = new Intent( );
intent.setAction(Schema.ACTION_CHANG_TEXT);
sendBroadcast(intent);
}
demo截图
发送广播页面
image.png
接收广播页面
image.png
更多参考 请参考:https://github.com/androidannotations/androidannotations/wiki/Receiving-intents