猿问

如何在Android Java中为多个活动提供生命周期事件和事件总线支持?

我有两个活动,然后都从基本活动扩展。



CarActivity{


}


GasCarActivity extends CarActivity{


  function onCreate(){

     registerGasEvent() // so that onLowGasEvent() will work

  }


  function checkGas(){}


  @Subscribe(threadMode = ThreadMode.MAIN)

  function onLowGasEvent(){


  }

}


ElectricCarActivity extends CarActivity{


  function checkBattery(){}


  @Subscribe(threadMode = ThreadMode.MAIN)

  function onLowBatteryEvent(){


  }

}

现在,我需要一个混合汽车活动,它同时使用气体汽车活动和电动汽车功能以及生命周期事件。


我还在使用事件总线库,如何在混合汽车活动中同时使用“低能耗”和“低节”事件的“订阅”功能?


我能在这里做什么?


不负相思意
浏览 93回答 3
3回答

拉风的咖菲猫

Java不支持实现的多重继承,但它支持接口的多重继承。因此,您可以根据需要实现任意数量的接口。若要避免重复并在多个类之间共享代码,可以使用委托。例如:接口:interface IGas {  checkGas();  onLowGasEvent();}interface IBattery  checkBattery();  onLowBatteryEvent();}通用功能的实现class GasImpl implements IGas {  checkGas() {  ...  }  onLowGasEvent() {  ...  }}class BatteryImpl implements IBattery {  checkBattery() {  ...  }  onLowBatteryEvent() {  ...  }}活动(注意实施设置):class GasCar extends Car implements IGas {  IGas mGasImpl = new GasImpl();   // create it in your own code, or inject to inverse dependencies, etc.  checkGas() {    mGasImpl.checkGas();  }  onLowGasEvent() {    mGasImpl.onLowGasEvent();  }}class BatteryCar extends Car implements IBattery {  IBattery mBatteryImpl;     checkBattery() {    mBatteryImpl.checkGas();  }  onLowBatteryEvent() {    mBatteryImpl.onLowBatteryEvent();  }}然后你的将是这样的:HybridCarclass HybridCar extends Car implements IGas {  IGas mGasImpl;  IBattery mBatteryImpl;     checkGas() {    mGasImpl.checkGas();  }  checkBattery() {    mBatteryImpl.checkBattery();  }}如果要使用 ,则应将订阅者保留为 Activity 接口 , 但也要将其实现委托给处理程序。因此,在:EventBusHybridActivity  @Subscribe(threadMode = ThreadMode.MAIN)  function onLowGasEvent(){     mGasImpl.onLowGasEvent();  }  @Subscribe(threadMode = ThreadMode.MAIN)  function onLowBatteryEvent(){    mBatteryImpl.onLowBatteryEvent();  }如果需要,请更新接口方法以将其作为参数传递。onLow...EventContext希望它有所帮助。

哆啦的时光机

Java 没有多重继承。您必须使 Car 对象具有要使用的共享方法。

幕布斯7119047

正如惠什@Kristy所建议的那样,Java不允许多重继承...但是有接口!只需执行如下操作:-创建两个界面:一个用于汽油车,另一个用于电动汽车。-您的混合动力汽车实现了这两个接口,因此您拥有了所需的两个功能。-您的旧车类根据其类型实现正确的接口。希望这有帮助或给你一些提示。干杯
随时随地看视频慕课网APP

相关分类

Java
我要回答