Android 我可以有一个多进程全局变量吗?
我在使用我的应用程序时遇到了一个真正的问题,它涉及两个过程。一个进程执行服务(p1),另一个进程执行GUI(p2) 我在p2中有一个类,它实现了自定义内存管理(及其静态)的对象(iThing)的使用。它必须是这样的,因为Android操作系统实现了在他想要的时候销毁视图Android 我可以有一个多进程全局变量吗?,android,variables,process,static,global,Android,Variables,Process,Static,Global,我在使用我的应用程序时遇到了一个真正的问题,它涉及两个过程。一个进程执行服务(p1),另一个进程执行GUI(p2) 我在p2中有一个类,它实现了自定义内存管理(及其静态)的对象(iThing)的使用。它必须是这样的,因为Android操作系统实现了在他想要的时候销毁视图 public class Connections{ public static int iGlobalCounter=0; public static Object iThing; public sta
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"
}
}
}
最后,在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中)时,计数器不会从上一个状态开始递增,而是从0开始递增,导致在离开服务时销毁对象,而不是应用程序
如果执行此导航,我将获得以下计数器:
MyMain类(1)->其他类(2)->另一类(3)->MyMain服务(1)
我的问题是,是否有一种方法可以拥有一个多进程全局变量?似乎每个过程都有自己的静态变量,而不是“真正的静态”。一个解决方案可以是使用SharedReferences来保存状态,但不是很好的解决方案,因为它在离开应用程序时不需要保存
谢谢,
PAU我认为您应该扩展
应用程序
类,并将您的全局变量
放在那里。您可以将全局数据存储在共享内存中(请参阅)。
要同步对文件的访问,我认为最好的方法是使用相同的内存文件实现某种类型的自旋锁。
在这种情况下,我不知道一种简单的方法来实现这一点。您可以选择以下选项,以便在不同的进程之间共享数据 消息队列 命名管道 内存映射文件
WCF on Named Pipes或MSMQ抱歉,我刚刚尝试了这一点,但总是发生相同的情况:两个进程,一个实例,在本例中,我们可能会看到一个并发示例。使应用程序类中的GlobalVariable成为静态的,并为其编写一个同步更新程序。
public class MyMainService extends Service{
@Override
public void onCreate() {
super.onCreate();
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}