Android攻略

【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

上一篇下一篇

猜你喜欢

热点阅读