【发布时间】:2012-03-30 12:55:35
【问题描述】:
我正在编写一个应用程序和一个需要数据的伴随小部件。该数据通过网络下载。我打算使用 IntentService 进行下载。该服务会将数据保存为文件。该文件随后被应用程序和小部件使用。
如何防止应用程序和小部件在服务写入文件时读取文件?
当应用程序或小部件正在读取文件时,如何防止服务写入文件?
谢谢!
【问题讨论】:
标签: android file file-io android-widget intentservice
我正在编写一个应用程序和一个需要数据的伴随小部件。该数据通过网络下载。我打算使用 IntentService 进行下载。该服务会将数据保存为文件。该文件随后被应用程序和小部件使用。
如何防止应用程序和小部件在服务写入文件时读取文件?
当应用程序或小部件正在读取文件时,如何防止服务写入文件?
谢谢!
【问题讨论】:
标签: android file file-io android-widget intentservice
考虑扩展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 字段必须为 true 才能让某人读取或写入文件,并且在读取或写入文件时它唯一为 false。
编辑:
public FileInputStream getFileInputStream() {
return context.openFileInput(file_name);
}
这需要APP 的实例。
【讨论】:
FileInputStream。这必须在 Java 中完成,因此Application 对象最有可能可用。如果没有,只需在APP 中创建一个返回FileInputStream 的方法。请参阅编辑以获取说明。