EventBus的使用


第一步:在项目(Project中)的build文件中依赖:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'//配置EventBu

第二步:在modulue中的build的文件中依赖

implementation 'org.greenrobot:eventbus:3.1.1'

 第三步:声明传输的实体类

public class EventData {
    private Integer iEventCode;
    private Integer iData;

    public Integer getiEventCode() {
        return iEventCode;
    }

    public void setiEventCode(Integer iEventCode) {
        this.iEventCode = iEventCode;
    }

    public Integer getiData() {
        return iData;
    }

    public void setiData(Integer iData) {
        this.iData = iData;
    }
}

第四步:创建广播接收者

public class BatterReceiver extends BroadcastReceiver {

    private static final String TAG = BatterReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction()==Intent.ACTION_BATTERY_CHANGED){
            int nowBattery =  intent.getIntExtra("level",0);
            int sumBattery = intent.getIntExtra("scale",100);
            int result = nowBattery/sumBattery*100;
            EventData eventData = new EventData();
            eventData.setiEventCode(1);
            eventData.setiData(result);

            EventBus.getDefault().post(eventData);//利用EventBus传递数据回主界面
        }
    }
}

第五步:注册广播发送者及EventBus接收数据

public class MainActivity extends AppCompatActivity{

    private String TAG = MainActivity.class.getSimpleName();

    private BatterReceiver mBatterReceiver;

    TextView tv_battery;
    ProgressBar progress1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        tv_battery = findViewById(R.id.tv_battery);
        progress1 = findViewById(R.id.progress1);

        EventBus.getDefault().register(this);
    }

    @Subscribe
    public void onEventMainThread(EventData eventData){
        switch (eventData.getiEventCode())
        {
            case 1:
                progress1.setProgress(eventData.getiData());
                tv_battery.setText("电池电量状态:"+eventData.getiData());
                break;
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        mBatterReceiver = new BatterReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(mBatterReceiver,filter);
    }
}