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); } }