【问题标题】:Changing a TextView in another class from a Service从服务更改另一个类中的 TextView
【发布时间】:2009-12-30 21:13:26
【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

  • 您可以发布您的服务和视图的代码吗?

标签: java android textview android-service


【解决方案1】:

我希望服务更新 TextView(通过.setText)的 对发生的某些事件的活动 在服务内。

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

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

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

【讨论】:

  • 感谢您的回答和链接,我将尝试使用广播 Intent!
  • 太棒了,它有效:-)!非常感谢!您的样本很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2023-03-28
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多