Как поделиться файлом между виджетом, сервисом и приложением? - PullRequest
0 голосов
/ 30 марта 2012

Я пишу приложение и удобный виджет, которому нужны данные.Эти данные загружаются через сеть.Я планирую использовать IntentService для загрузки.Этот сервис сохранит данные в виде файла.Этот файл затем используется и приложением, и виджетом.

Как я могу запретить приложению и виджету читать файл, пока служба выполняет запись в него?

А как я могу предотвратить запись службы в файл, пока приложение или виджет читает файл?

Спасибо!

1 Ответ

1 голос
/ 30 марта 2012

Рассмотрите возможность расширения 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 должно быть истинным, чтобы кто-то мог прочитать или записать файл, и оно должно быть только ложным во время чтения или записи.

EDIT:

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

Для этого потребуется экземпляр APP.

...