【发布时间】:2011-12-26 21:05:27
【问题描述】:
我在使用涉及 2 个进程的应用时遇到了真正的问题。一个进程执行服务 (p1),另一个进程执行 GUI (p2)。
我在 p2 中有一个类,它实现了对自定义内存管理(及其静态)对象 (iThing) 的使用。必须像这样,因为 Android OS 实现了随时销毁视图。
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中)时,计数器不是从上一个状态开始递增,而是从0开始,导致销毁离开服务时的对象,而不是应用程序。
如果进行此导航,我会得到以下计数器: MyMainClass (1) --> OtherClass (2) --> AnotherClass (3) --> MyMainService (1)
我的问题是是否有办法拥有一个多进程全局变量?似乎每个进程都有自己的静态变量,而不是“真正的静态”。一个解决方案可能是使用 SharedPreferences 来保存状态,但不是很好的解决方案,因为离开应用程序时它没有被保存。
谢谢, 波霸
【问题讨论】:
标签: android variables process static global