나는 이것으로 혼란 스럽지만, 안드로이드에서 파일을 캐시 할 수 있다는 것을 알고 있습니다. 무엇을 하려는지, 공유 할 수있는 방법이 있습니까? 모든 서비스에서 액세스 할 수있는 전역 변수? 이 방법을 사용하면 기본적으로 하나의 변수 만 될 수있는 파일을 사용할 필요가 없습니다. 기본적으로 IntentService
이 변수를 업데이트하고 BroadcastReciever
에 액세스 할 수 있기를 바랍니다. 이 작업을 수행하는 데 가장 좋은 방법에 대한 조언을 주시면 감사하겠습니다.안드로이드에서 IntentService와 BroadcastReciever 사이에 공유 된 전역 변수
0
A
답변
1
나는 자바가 Android 컨텍스트에 적용되는 질문이라고 말하고 싶습니다. 그 외에도 변수를 보유하고 외부에서이를 참조하는 클래스를 만들 수 있습니다.
- 당신이 구현과의 AndroidManifest.xml에 선언해야합니다 Application 객체에 추가
귀하의 문제는 이제 두 가지 방법이 있다는 것을 그 객체에 대한 참조를 얻는 것입니다 및합니다. 그런 다음 getter를 노출하고 응용 프로그램 컨텍스트를 사용하여 객체에 액세스해야합니다.
- 항상 동일한 인스턴스 (싱글 톤 패턴)를 반환하는 정적 메서드로 액세스 할 수있는 개체의 단일 인스턴스를 제공하십시오. 두 번째이 같은
뭔가 :
public class Wrapper {
private Object mVariable;
private static sInstance;
private Wrapper(){
}
public static Wrapper getInstance(){
if(sInstance == null){
sInstance = new Wrapper();
}
return sInstance;
}
// setters and getters for variables
}
가 다른 문제를 고려해야 할주의하십시오. 동시성은 어떻습니까? 백그라운드 서비스를 사용하는 경우 다른 스레드에서 일부 작업을 수행하고 가변성을 유지하거나 요소가 항상 업데이트되도록 동기화를 제공 할 수 있습니다. 폭로하려는 변수를 랩핑하면 래퍼 작성 및 변수에 대한 액세스를 제어 할 수 있습니다.
음, 이것을 할 수있는 좋은 방법이 없다면,'SharedPreferences'를 살펴 보시고 여기를 눌러보세요. – eWizardII
정적 데이터 멤버는 프로세스의 수명을 제어하지 않기 때문에 본질적으로 신뢰할 수 없습니다. 프로세스 호출은 구성 요소 호출 사이에서 종료 될 수 있습니다. 정적 데이터 멤버 만 캐시로 사용하고 필요에 따라 다시 만들거나 다시 검색 할 수있는 데이터를 사용하십시오. – CommonsWare
자, 시몬 솔루션을 살펴 보겠습니다. 이 작업을 수행하려는 이유 중 일부는 'ActivityRecognition'에'GooglePlayServicesAPI'를 사용하여 잠시 동안 기기가 'STILL'후에 업데이트 전달을 일시 중지 할 수 있으며 마지막으로 알려진 활동을 얻기 위해 다른 방법이 필요합니다. – eWizardII