关于BroadCast,startActivityForResult以及EventBus

来源:互联网 发布:米塞斯 人的行为知乎 编辑:程序博客网 时间:2024/06/16 18:15

BroadCast的使用
1.动态注册广播:

第一个界面

public class MainActivity extends AppCompatActivity {    //声明广播 private BroadcastReceiver mReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            Toast.makeText(mContext, "接收到广播发送的数据了", Toast.LENGTH_SHORT).show();            tvContent.setText("广播数据");        }    }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) {    //注册    IntentFilter filter = new IntentFilter();    filter.addAction("com.bsoft.function");    registerReceiver(mReceiver, filter);  }@Override    protected void onDestroy() {        super.onDestroy();        //反注册        unregisterReceiver(mReceiver);    }}

第二个界面:

 sendBroadcast(new Intent("com.bsoft.function"));

startActivityForResult的使用

//第一个界面 Intent intent = new Intent(mContext, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {            int age = data.getIntExtra("age", -1);            String name = data.getStringExtra("name");            tvContent.setText("name: "+name+"\n"+"age: "+age);        }    }
//第二个界面 Intent intent = new Intent(); intent.putExtra("name", "李书记"); intent.putExtra("age", 18); setResult(RESULT_OK, intent); finish();

EventBus的使用

 //第一个界面中 //注册  EventBus.getDefault().register(this); //反注册 EventBus.getDefault().unregister(this);//EventBus 发送消息后执行的方法  @Subscribe(threadMode = ThreadMode.MAIN)    public void onEventExpert(EventExpert event){        tvContent.setText("姓名:"+event.getName()+"\n"+"年龄:"+event.getAge());    }
//第二个界面EventBus.getDefault().post(new EventExpert("李专家",28));
//EventBus中通过类来传递数据public class EventExpert {    private String name;    private int age;    public EventExpert(String name, int age) {        this.name = name;        this.age = age;    }    public int getAge() {        return age;    }    public String getName() {        return name;    }}