【Android開發(fā)中用Annotation 10行代碼完成廣播發(fā)送接收】
在Android開發(fā)中大量的廣播,如果用EventBus接收發(fā)送廣播另當(dāng)別論错洁,如果用系統(tǒng)自帶的廣播,要先注冊(cè) 然后注冊(cè)Action盐肃,最后Destory的時(shí)候還要 unregist, 發(fā)送廣播的地方 還要搞個(gè)類 extends BroadCastReicever 非常繁瑣糙箍,代碼越多 越容易出問題谜诫,越簡(jiǎn)單 越容易排錯(cuò),我一直思考如何 幾行代碼搞定復(fù)雜操作痪蝇。后來找到了Google早已準(zhǔn)備好的 Annotation
注解框架鄙陡,不到10行搞定發(fā)送接收!躏啰!立竿見影 效果果然快趁矾,代碼行數(shù)果然少。
我們看看以前的寫法比對(duì)一下
private BroadcastReceiver mVmcMoneyReceiver = new BroadcastReceiver( ){
@Override
public void onReceive( Context context, Intent intent ){
}
if (TextUtils.equals(action, Action.....)) {
//Action判斷
}....
收廣播的地方還要先注冊(cè)给僵、再注銷方法調(diào)用部分多
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);
}
比對(duì)一下 Annotation的注解寫法
需要接受廣播的 一行代碼搞定
@EActivity
public class MainActivity extends BaseActivity{
直接關(guān)注與業(yè)務(wù)愈魏,什么Action??簡(jiǎn)單明了!想际!對(duì)不需要管他 要注冊(cè)要unRegist
@Receiver(actions = Schema.ACTION_CHANG_TEXT)
public void onReiverChangeTextAction( ){
tvFirst.setText("哈哈哈 我收到了");
}
直接發(fā)廣播(另外一個(gè)頁面)
public void sendBoradCastReceiver( View view ){
Intent intent = new Intent( );
intent.setAction(Schema.ACTION_CHANG_TEXT);
sendBroadcast(intent);
}
demo截圖
發(fā)送廣播頁面
image.png
接收廣播頁面
image.png
更多參考 請(qǐng)參考:https://github.com/androidannotations/androidannotations/wiki/Receiving-intents