今天要写以后测试的例子,需要在受到广播以后将一些数据传递个Activity,除了第三方的EventBus一下子还没想到好的方法,我们知道Activity想其他组件传递数据,简单的就使用Intent携带过去就好了,但是从Receiver向Activity传递数据呢,其实可以使用回调接口。
就像Activity中的button也是使用的回调接口,Button类就将用户点击的响应传递个了Activity。代码如下:
class TestBrocastReceiver extends BroadcastReceiver {
private static final String TAG = "TestiBrocastReceiver";
private Info info;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG,"广播接受者的类型:" + action);
if(info != null){
info.getString(action );
}
}
//回调接口
interface Info{
void getString(String str);
}
//传递回调对象
public void setInstance(Info info){
this.info= info;
}
}
在Activity中就像实现button点击的接口一样
public class TestiActivity extends Activity implements TestBrocastReceiver.Info{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi);
TestBrocastReceiver testBrocaster = new TestBrocastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.test");//闹钟触发广播
this.registerReceiver(testBrocaster, filter);
//因为要这是回调对象,所以需要使用动态注册广播
testBrocaster .setInstance(this);
}
@Override
public void getString(String str) {
//在这个回调方法中就获取到了广播中传递的数据了。
Toast.makeText(WifiActivity.this, str, Toast.LENGTH_LONG).show();
}
}
仔细看看是不是和实现Button
点击的OnClickListener
接口很像,再往下推一步,所有想要向Activity中传递数据的行为,都可以使用这种回调接口的方式。