如何将数据从服务/线程类传递到主要活动?

时间:2012-10-21 00:20:29

标签: java android multithreading service android-intent

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

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

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

但我真的不知道怎么做。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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