我有一个真正的问题,使用我的应用程序涉及2个进程。一个进程执行一个Service(p1),另一个进程GUI(p2)。我可以有多进程全局变量吗?
我在p2中有一个类,实现了使用自定义内存托管(及其静态)的对象(iThing)。它必须是这样的,因为Android操作系统的实现会随时销毁视图。
public class Connections{
public static int iGlobalCounter=0;
public static Object iThing;
public static void start(){
iGlobalCounter++;
Log.d("PROCESS", "UP: "+iGlobalCounter);
if (iGlobalCounter<=1){
//Create the object "iThing"
}
}
public static int stop(){
iGlobalCounter--;
Log.d("PROCESS", "DOWN: "+iGlobalCounter);
if (iGlobalCounter<=0){
//Destroy the object "iThing"
}
}
}
主要GUI(在P2),启动和停止对变量的onCreate /的onDestroy(在我的应用程序的所有视图)我有服务,这也
public class MyMainClass extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}
终于在P1需要的变量,因此,它同样
public class MyMainService extends Service{
@Override
public void onCreate() {
super.onCreate();
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}
的问题是,如果我只用P2(GUI),它会一切安好,但是当我执行服务(以P1),计数器没有按” t从最后一个状态开始增加,但是从0开始增加,导致在离开服务时摧毁对象,而不是应用程序。
如果这样做导航,我得到以下计数器: MyMainClass(1) - > OtherClass(2) - > AnotherClass(3) - >MyMainService()
我问题是如果有一种多进程全局变量的方法?因为看起来每个进程都有自己的静态变量,并不是“真正的静态”。一个解决方案可以使用SharedPreferences来保存状态,但并不是很好的解决方案,因为在离开应用程序时它不会被保存。
感谢, PAU
对不起,我只是试过这个,但仍然发生相同的情况:两个进程,实例 – Corbella 2011-12-27 00:25:00
也许在我们看到一个并发的例子。使应用程序类中的GlobalVariable变为静态并写入同步更新程序。 – Yury 2011-12-27 08:42:45