我怎样才能在服务类中调用活动方法?

时间:2018-02-20 10:20:48

标签: java android

这里我试图从Audio Service类调用main活动类的方法。 但是当我把这个方法称为: -

new HomeActivity()。previousChannel();

当时活动类方法被调用,但它也自动调用oncreate()方法。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

我希望您使用 EventBus 进行类,片段,服务之间的通信。它非常简单,最可靠和高效。

只需3个步骤即可实现:

1.Define Events。

public static class MessageEvent { /* Additional fields if needed */ }

2.Prepare订阅者:声明并注释您的订阅方法,可选择指定一个线程模式:

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(MessageEvent event) {/* Do something */};

注册并取消注册您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册:

 @Override
 public void onStart() {
     super.onStart();
     EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
     super.onStop();
     EventBus.getDefault().unregister(this);
 }

3.Post Events。

 EventBus.getDefault().post(new MessageEvent());

有关详情,请查看here.

希望它可以帮到你。

答案 1 :(得分:0)

  1. 您可以使用名称为MyCallBack的界面,该界面将由您的活动以任何方法实施,例如do Something();
  2. 您的活动将实施界面方法。
  3. 从您的服务类中,您需要从该接口类型的变量调用接口方法。
  4. 为此,在您的服务类中,获取一个类型为Interface的变量,如serviceCallBack,并在该变量中传递活动类的上下文。
  5. 从该变量中你可以调用接口方法,它会自动将你带到活动类,你可以调用你的活动方法,如更新任何UI组件