我根本没有找到在活动之间共享实时数据的解决方案。我的第一个活动接收实时对象(类型为double,随机数)。我想将这些数字传递给第二项活动。一切正常,只有第二个Activity只显示一次数据。我必须通过返回第一个活动来刷新活动,然后第二个活动才会显示最新数据。我实现了Singelton模式:
public class FirstActivity extends Activity{
public double xAxis;
public double yAxis;
public static FirstView instance;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.device_view);
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
int data1 = msg.arg1;
xAxis = (double) data1;
dataX.setText(String.valueOf(xAxis));
int data2 = msg.arg2;
yAxis = (double) data2;
dataY.setText(String.valueOf(yAxis));
}
};
secondview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent nextScreen = new Intent(getApplicationContext(),
SecondActivity.class);
startActivity(nextScreen);
}
});
}
public static void initInstance(){
if(instance == null)
{
instance = new FirstActivity();
}
}
public static FirstActivity getInstance(){
return instance;
}
}
SecondView类
public class SecondActivity extends Activity{
private double valueX;
private double valueY;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linegraph);
valueX = FirstActivity.getInstance().xAxis;
valueY = FirstActivity.getInstance().yAxis;
}
}
申请类
package com.bluetoothcomm;
import android.app.Application;
public class MyApplication extends Application {
@Override
public void onCreate(){
super.onCreate();
initSingeltons();
}
public void initSingeltons(){
FirstActivity.initInstance();
}
}
答案 0 :(得分:1)
您可以实现能够向Activity1和Activity2提供实时数据的后台服务。我猜你的问题是,如果你通过一个Intent与putExtras将数据从Activity1传递到Activity2,这样它只会在你启动Activity2的时候执行此操作。
答案 1 :(得分:1)
我发现了我的问题,解决方法是使用Application
。只有这个剂量不能解决我的问题。问题是静态变量实例public static FirstView instance
绑定到类加载器,这是第一个启动它的类。因此,当任何类中的静态变量已由Activity启动时,并且当第二个Activity启动时,第一个Activity将被销毁,因此这意味着静态变量也未被消毒。这就是为什么SecondActivity没有得到最新数据或实时数据,它只捕获静态常数数据。
我使用Singelton和Application的组合改变了我的代码,这样,当激活SecondActivity时,静态变量永远不会被消除。但是我仍然得到相同的结果,当我切换到第二个活动时,静态变量实例未被激活。我做错了,有人看到了吗。我添加了我的代码。
@Max Rasguido,@ Orabig
答案 2 :(得分:0)
您应该使用意图流程。 docs
答案 3 :(得分:0)
如果你说activity1收到你的数据,那么你的数据应该如何改变?
但是,我会使用您的应用程序类的首选项或属性(这是一个单例本身),但是您提供的信息太少,无法完全理解您的需求......