【问题标题】:How can i call method of activity in service class? [duplicate]如何在服务类中调用活动方法? [复制]
【发布时间】:2018-02-20 10:20:48
【问题描述】:

这里我试图从音频服务类调用主要活动类的方法。 但是当我调用这样的方法时:-

新的 HomeActivity().previousChannel();

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

请帮帮我。

【问题讨论】:

标签: java android


【解决方案1】:

我更喜欢你使用 EventBus 来进行类、片段、服务之间的通信,不管它是什么。它非常简单,最可靠和高效。

只需 3 个步骤即可实现:

1.定义事件。

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

2.准备订阅者:声明和注释你的订阅方法,可选指定线程模式:

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

注册和注销您的订阅者。例如在 Android 上,Activity 和 Fragment 通常应该根据它们的生命周期进行注册:

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

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

3.发布事件。

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

更多详情可以查看here.

希望对你有帮助。

【讨论】:

    【解决方案2】:
    1. 您可以使用名为 MyCallBack 的接口,该接口将由您的活动通过任何方法实现,例如 do Something();
    2. 您的活动将实现接口方法。
    3. 从您的服务类中,您需要从该接口类型的变量调用接口的方法。
    4. 为此,在您的服务类中获取接口类型的变量,如 serviceCallBack,并在该变量中传递活动类的上下文。
    5. 您可以从该变量调用接口方法,该方法会自动将您带到活动类,并且您可以调用活动方法,例如更新任何 UI 组件

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多