1

我有两个班,一个是标准活动,另一个是服务。我希望服务在服务中发生的某些事件上更新 Activity 的TextView(通过.setText())。

我试图通过在 Activity-Class 中编写类似 setter-method 的东西来实现这一点,但是 TextViews 不接受static-reference,当我尝试调用 Activity-class 的实例时(通过MyActivityClassName aVariable = new MyActivityClassName();),我得到一个NullPointer Exception,即使问题中的视图在调用时是可见的。

谁能告诉我我做错了什么:-)?这可能是一个基本的 Java 问题,而不是 Android 问题,但由于它可能与 Android 服务的性质有关,我仍然添加了 android-tag。

谢谢你的帮助!

4

1 回答 1

3

我希望服务在服务中发生的某些事件上更新 Activity 的 TextView(通过 .setText)。

我强烈建议进行更大的逻辑解耦。让Service通知Activity更新TextView.

您可以通过广播IntentActivity提供Service调用的侦听器对象来做到这一点。无论哪种情况,请确保 Activity 与服务分离(取消注册侦听器或广播Intent接收器),以免导致内存泄漏。

当然,这仅在活动实际运行时才有效。

于 2009-12-30T23:16:08.527 回答