【问题标题】:How can I pass data from service/thread class to the main activity?如何将数据从服务/线程类传递到主要活动?
【发布时间】:2012-10-21 00:20:28
【问题描述】:

我在名为"sum" 的主要活动中创建了变量,并在服务的线程中创建了将变量增加1 的循环,如下所示:

public void run() {
    for(int i=0;i<50000000;i++) {
        num++;
    }

现在我希望每次变量 "num" 增加 1 时,它会将 "sum" 的值更新为 "num" 的值。

但我真的不知道该怎么做。

我希望它是实时更新,而不是在线程结束或服务被销毁之后。

【问题讨论】:

    标签: java android multithreading service android-intent


    【解决方案1】:

    您必须将活动绑定到服务并为其定义接口。 但它必须是一项服务吗?也许 AsyncTask 可以是一个更简单的解决方案?

    【讨论】:

      【解决方案2】:

      您将通过在您的服务线程中广播一个意图并在您的主线程中为该类型的意图注册一个接收器来实现这一点。为此,您将需要三个组件:

      • 意图,如果您需要从服务发送到主线程的额外数据,则添加 Extras
      • 广播接收器,扩展BroadcastReceiver的类,在广播意图时执行它的OnReceive方法
      • 意图过滤器,基本上是将意图链接到接收器的东西。您使用过滤器类型注册接收器。

      我可以重新输入代码,但是在这个链接上有关于如何使用它的解释。您对最后三张幻灯片感兴趣:

      http://www.slideshare.net/CodeAndroid/android-intent-intent-filter-broadcast-receivers

      另外,看看这个: http://developer.android.com/reference/android/content/BroadcastReceiver.html http://developer.android.com/reference/android/content/IntentFilter.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2016-07-28
        • 2017-11-13
        • 1970-01-01
        相关资源
        最近更新 更多