在Android中:如何从服务调用活动的功能?

时间:2010-05-16 13:16:55

标签: android service callback android-activity android-intent

我有一个活动(A)和一个服务(S),它由A启动,如下所示:

Intent i = new Intent();
i.putExtra("updateInterval", 10);
i.setClassName("com.blah", "com.blah.S");
startService(i);

A在A:中有这样的功能:

public void someInfoArrived(Info i){...}

现在我想从S内调用A.someInfoArrived(i) Intent.putExtra没有我可以传递Object引用等的版本...... 请帮忙!

PS:反过来(新信息的轮询S)不是我需要的。我找到了关于如何做到这一点的足够信息。

1 个答案:

答案 0 :(得分:14)

一种选择是从startService()切换到bindService()并使用本地绑定模式。然后,您需要在某个时刻在S上调用一个方法来注册一个监听器或回调方法。然后,当某些信息到达时,S将会在A上调用它。您可以看到here的示例项目。

或者,您可以保留startService()并使用广播Intent让S告诉A有关到达的某些信息。您可以看到展示此类广播的示例项目Intent here