第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android Java中為多個活動提供生命周期事件和事件總線支持?

如何在Android Java中為多個活動提供生命周期事件和事件總線支持?

不負(fù)相思意 2022-09-28 14:57:27
我有兩個活動,然后都從基本活動擴(kuò)展。即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(){  }}現(xiàn)在,我需要一個混合汽車活動,它同時使用氣體汽車活動和電動汽車功能以及生命周期事件。我還在使用事件總線庫,如何在混合汽車活動中同時使用“低能耗”和“低節(jié)”事件的“訂閱”功能?我能在這里做什么?
查看完整描述

3 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊

Java不支持實(shí)現(xiàn)的多重繼承,但它支持接口的多重繼承。因此,您可以根據(jù)需要實(shí)現(xiàn)任意數(shù)量的接口。若要避免重復(fù)并在多個類之間共享代碼,可以使用委托。


例如:


接口:

interface IGas {

  checkGas();

  onLowGasEvent();

}


interface IBattery

  checkBattery();

  onLowBatteryEvent();

}

通用功能的實(shí)現(xiàn)

class GasImpl implements IGas {

  checkGas() {

  ...

  }

  onLowGasEvent() {

  ...

  }

}


class BatteryImpl implements IBattery {

  checkBattery() {

  ...

  }

  onLowBatteryEvent() {

  ...

  }

}

活動(注意實(shí)施設(shè)置):

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

  }

}

然后你的將是這樣的:HybridCar

class HybridCar extends Car implements IGas {

  IGas mGasImpl;

  IBattery mBatteryImpl;   


  checkGas() {

    mGasImpl.checkGas();

  }

  checkBattery() {

    mBatteryImpl.checkBattery();

  }

}

如果要使用 ,則應(yīng)將訂閱者保留為 Activity 接口 , 但也要將其實(shí)現(xiàn)委托給處理程序。因此,在:EventBusHybridActivity

  @Subscribe(threadMode = ThreadMode.MAIN)

  function onLowGasEvent(){

     mGasImpl.onLowGasEvent();

  }


  @Subscribe(threadMode = ThreadMode.MAIN)

  function onLowBatteryEvent(){

    mBatteryImpl.onLowBatteryEvent();

  }

如果需要,請更新接口方法以將其作為參數(shù)傳遞。onLow...EventContext


希望它有所幫助。


查看完整回答
反對 回復(fù) 2022-09-28
?
哆啦的時光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個贊

Java 沒有多重繼承。您必須使 Car 對象具有要使用的共享方法。


查看完整回答
反對 回復(fù) 2022-09-28
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊

正如惠什@Kristy所建議的那樣,Java不允許多重繼承...但是有接口!

只需執(zhí)行如下操作:

-創(chuàng)建兩個界面:一個用于汽油車,另一個用于電動汽車。

-您的混合動力汽車實(shí)現(xiàn)了這兩個接口,因此您擁有了所需的兩個功能。

-您的舊車類根據(jù)其類型實(shí)現(xiàn)正確的接口。

希望這有幫助或給你一些提示。

干杯


查看完整回答
反對 回復(fù) 2022-09-28
  • 3 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號