2 가지 프로세스가 관련된 내 앱을 사용하는 데 실제 문제가 있습니다. 하나의 프로세스가 서비스 (p1)를 실행하고 다른 프로세스는 GUI (p2)를 실행합니다.다중 프로세스 글로벌 변수를 사용할 수 있습니까?
사용자 정의 메모리 관리 (및 정적) 객체 (iThing)의 사용을 구현하는 p2 클래스가 있습니다. 그가 원할 때마다 전망을 파괴하는 안드로이드 OS 구현의 이런 bacause와 같아야합니다.
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 (P1)에 마지막으로
public class MyMainClass extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}
나는 또한 서비스를 가지고 (내 응용 프로그램의 모든보기에 대한) 변수를 필요로하므로, 그렇습니다 같은
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부터 결과적으로 앱이 아닌 서비스를 떠날 때 객체가 파괴됩니다. 이 탐색을 할 경우
, 나는 다음과 같은 카운터를 얻을 : -> OtherClass (2) -> AnotherClass (3) - MyMainClass (1)>MyMainService (1)
내 문제는 다중 프로세스 전역 변수를 갖는 방법이 있는지 여부입니다. 모든 프로세스가 자체 정적 변수를 사용하고 "실제 정적"이 아닌 것처럼 보입니다. 솔루션은 SharedPreferences를 사용하여 상태를 저장하지만 앱을 종료 할 때 저장되지 않기 때문에 정말 좋은 솔루션은 아닙니다.
감사합니다, 포
죄송합니다, 방금 시도했지만 동일한 현상이 계속 발생합니다 : 인스턴스 두 프로세스 – Corbella
어쩌면 티에 동시성의 예를 볼 수 있습니다. Application 클래스의 GlobalVariable을 정적으로 만들고 동기화 된 업데이터를 작성하십시오. – Yury