【问题标题】:Why cant i update a textView in Activity - from a service为什么我不能更新 Activity 中的 textView - 从服务
【发布时间】:2014-07-22 00:51:37
【问题描述】:

我有一个名为 MainActivity 的活动和一个名为 MainService 的服务。

在 mainActivity 我有一个按钮来启动 MainService 和一个 textView(让我们说 - txt1)。

在服务的 OnCreate() 方法中,我获取了 MainActivity 的一个实例,并使用该实例尝试更新活动的 txt1(TextView) - 使用 setText。甚至尝试使用 post() 方法。

但它的显示错误。如果我没有错,我认为 UI 不能从服务中更新。或者,我需要将服务与活动绑定。对吧?

那么,我的问题是为什么我不能从服务更新 textView 的活动?

【问题讨论】:

  • 请向我们展示您的相关代码
  • 如果你在 UI 线程中更新文本视图,那只有它没问题....

标签: android


【解决方案1】:

你可能不能直接,如果你创建一个回调引用,你可以从服务调用你的活动中的一个方法,但本质上 textView 更新是在 UI 线程上运行的,所以实际的更新必须发生在活动中..

这可能会有所帮助:https://developer.android.com/training/multiple-threads/communicate-ui.html

【讨论】:

    【解决方案2】:

    你可以这样做:

    1. 从服务中发送广播(意图)。
    2. 在活动的 onResume() 中注册接收器,并在 onPause() 中取消注册。
    3. 在 BroadcastReceiver 的 onReceive 中更新 textview。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      相关资源
      最近更新 更多