Android - 如何将CONSTANTLY更新整数传递给新活动

时间:2014-11-27 21:53:11

标签: java android

我有两项活动。我想将一个整数传递给另一个。我就是这样做的

public void gotoSecondActivity(View v) {

    Intent intent = new Intent(this, SecondActivity.class);
    intent.putIntegerArrayListExtra("myInt", myVariable);
    startActivity(intent);
}

然后我在onCreate函数中检索它,如下所示

    var = getIntent().getIntExtra("myInt", 0);

这很有效。但是,当我按下按钮进入下一个活动

时,它才会获得价值

但是,myVariable是一个不断更新和更改的整数。即使我在我的secondActivity上,整数应该在后台运行并改变。

有没有办法不断传递这个整数?

我甚至尝试将其设为静态并像var = MainActivity.myVariable;

一样阅读

3 个答案:

答案 0 :(得分:2)

您需要实现某种观察者模式。使用BroadcastReceiver或事件总线,如ottoGreenRobot

更新(更多细节):

build.gradle

dependencies {
    compile 'de.greenrobot:eventbus:2.2.1'
}

Event.java

public class Event {
    public int value;
    public Event() {}
}

MainActivity.java

public class MainActivity extends Activity {
    private Event event = new Event();

    // inside a loop
    event.value = newValue;
    EventBus.getDefault().post(event);
}

SecondActivity.java

public class SecondActivity extends Activity {
    @Override
    public void onResume() {
        super.onResume();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onPause() {
        EventBus.getDefault().unregister(this);
        super.onPause();
    }

    public void onEvent(Event event) {
        // do something
    }
}

但更重要的是,您发送的是什么类型的价值,以及您如何计划更新它? 您最好使用IntentService或一些后台流程。

答案 1 :(得分:1)

为什么不在应用程序级别定义变量,并且您随时可以访问它?

答案 2 :(得分:0)

你使它成为静态的解决方案应该做到这一点,只是确保不在本地存储变量但总是从静态字段中获取它,这将是最简单的方法。