我有两项活动。我想将一个整数传递给另一个。我就是这样做的
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;
答案 0 :(得分:2)
您需要实现某种观察者模式。使用BroadcastReceiver
或事件总线,如otto或GreenRobot。
更新(更多细节):
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)
你使它成为静态的解决方案应该做到这一点,只是确保不在本地存储变量但总是从静态字段中获取它,这将是最简单的方法。