2012-03-30 1 views
0

저는 데이터를 필요로하는 App과 호환 위젯을 쓰고 있습니다. 이 데이터는 인터넷을 통해 다운로드됩니다. IntentService를 사용하여 다운로드를 수행 할 계획입니다. 이 서비스는 데이터를 파일로 저장합니다. 이 파일은 App과 위젯에서 모두 사용됩니다.위젯, 서비스 및 앱간에 파일을 공유하는 방법은 무엇입니까?

서비스가 쓰는 동안 앱과 위젯이 파일을 읽지 못하게하려면 어떻게해야합니까?

그리고 앱이나 위젯이 파일을 읽는 동안 서비스가 파일에 쓰지 못하게하려면 어떻게해야합니까?

감사합니다.

답변

1

Application을 확장하고 읽기 필드를 선언 허가 작성 생각해 보면 열 때마다 다음

public class APP extends Application { 
    boolean motherMayI; 

    ... 
} 

FileInputStream 또는 FileOutputStream, 기본적으로

... 
if (motherMayI) { 
    APP.motherMayI = false; 
    FileInputStream input = context.openFileInput("some_file_name"); 

    //read your stuff 

    input.close() 
    APP.motherMayI = true; 
} 
... 

이 필드 motherMayI가 참이어야합니다 누군가는 파일을 읽거나 쓰고, 읽거나 쓰는 동안 만 거짓이됩니다.

편집 :이 APP의 인스턴스를 필요로

public FileInputStream getFileInputStream() { 
    return context.openFileInput(file_name); 
} 

.

+0

좋아, 이것은 간단하고 좋은 해결책처럼 보입니다. 하지만 응용 프로그램 개체의 수명주기에 대해 잘 모릅니다. 어떤 활동이 생성되지 않고 위젯 만 생성 될 때 사용할 수 있습니까? –

+0

귀하의 질문에 대한 정확한 답변을 모르겠지만 여기에 내가 생각하는 바가 있습니다. 위젯이 파일을 읽고 따라서 'FileInputStream'을 열어야합니다. 이것은 Java로 이루어져야하기 때문에'Application' 객체는 대부분 유용합니다. 그렇지 않다면'APP'에'FileInputStream'을 반환하는 메소드를 생성하십시오. 설명을 위해 편집을 참조하십시오. – gobernador

+0

첫 번째 제안 된 솔루션은 훌륭하게 작동합니다. 고맙습니다! –