내 응용 프로그램 개체에 문제가 있습니다. 현재 전자 게임 보드에서 들어오는 데이터를 시뮬레이션하기 위해 서비스를 사용하고 있습니다. 이 데이터는 2D 불린 배열로 표현됩니다. 5 초마다 Service는 응용 프로그램 개체의 메서드를 사용하여 배열을 업데이트합니다 (setDetectionMap()). 이 배열은 다른 메소드 (getDetectionMap())를 사용하여 주 활동에서 스레드에 의해 읽혀지고 있습니다. 디버깅을 한 후에는 주 활동이 변경 사항을 보지 못한다는 것이 거의 긍정적입니다.응용 프로그램 개체가 공유되지 않습니다.
public class ChessApplication extends Application{
private static ChessApplication singleton;
private boolean[][] detectionMap;
public static ChessApplication getInstance(){
return singleton;
}
@Override
public void onCreate() {
super.onCreate();
singleton=this;
detectionMap=new boolean[8][8];
}
public boolean[][] getDetectionMap(){
return detectionMap;
}
public void setDetectionMap(boolean[][] newMap){
detectionMap=newMap;
Log.d("Chess Application","Board Changed");
}
}
내 매니페스트 확인했지만, 내가 수십 번 내 객체 선언을 다시 한 나는 때 코드가 실행되고 있는지 확인 로그 캣 태그를 추가했습니다 : 여기 내 응용 프로그램 개체에 대한 코드입니다 그것이 있어야한다고 생각하고, 심지어 중복되는 Singleton 코드를 구현했습니다. 어떤 아이디어가 이것을 일으킬 수 있습니까? 덧붙여 말하자면 누구나 액티비티가 실행 중일 때 변수 상태를 보는 방법을 말해 줄 수 있습니까? 미리 감사드립니다.
답장을 보내 주셔서 감사합니다. 그래서 저는 실제로 .getDetectionMap()이 특정 값 (내 서비스에서 하드 코딩하는 것)을 반환 할 때까지 대기하는 while 루프를 사용하여 내 Activity에서 업데이트를 폴링합니다. 그러나 쓰기가 완료되었음을 결코 인정하지 않습니다. . 그러나 내가 while 루프를 입력하기 전에 내 주 활동에서 .setDetectionMap()을 사용하여 값을 설정하면 정상적으로 작동합니다. 그렇기 때문에 내 Application Object가 Singleton 역할을하지 않고 내 Activity와 Service가 둘 다 Object의 다른 인스턴스를 실행하고있는 것처럼 보입니다. 감사. – user1373705
두 개의 다른 응용 프로그램 개체를 실행하는 경우 나는 놀랄 것입니다. 그러나 예방책과 마찬가지로 detectMap을 정적으로 설정할 수 있습니다. 그런 다음 문제가 사라지면 두 개의 다른 Application 인스턴스라는 것을 알게됩니다. –
static으로 detectMap을 설정해 보았지만 문제가 지속됩니다. LogCat 태그를 사용하여 Service and Activity가 예상 시간에 읽기/쓰기를하고 있으며 Application Object가 이러한 호출에 응답하고 있음을 확인했지만 아직 두 개는 서로를 전혀 인식하지 못하는 것 같습니다. – user1373705