0
我正在寫一個應用程序和一個需要數據的歡迎小部件。這些數據通過網絡下載。我打算使用IntentService來下載。該服務將數據保存爲文件。該文件然後由App和小部件使用。如何在窗口小部件,服務和應用程序之間共享文件?
如何防止應用程序和小部件在服務寫入時讀取該文件?
如何防止服務在應用程序或小部件正在讀取文件時寫入文件?
謝謝!
我正在寫一個應用程序和一個需要數據的歡迎小部件。這些數據通過網絡下載。我打算使用IntentService來下載。該服務將數據保存爲文件。該文件然後由App和小部件使用。如何在窗口小部件,服務和應用程序之間共享文件?
如何防止應用程序和小部件在服務寫入時讀取該文件?
如何防止服務在應用程序或小部件正在讀取文件時寫入文件?
謝謝!
考慮延長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必須是真實的讀取或寫入文件的人,以及在讀取或寫入文件時唯一的錯誤。
編輯:
public FileInputStream getFileInputStream() {
return context.openFileInput(file_name);
}
這將需要的APP
一個實例。
好吧,這看起來像一個簡單而好的解決方案。但我不知道應用程序對象的生命週期。當沒有創建活動並僅創建小部件時它是否可用? – 2012-04-03 06:20:21
我不知道你的問題的確切答案,但這是我的想法:小部件讀取一個文件,因此必須打開一個'FileInputStream'。這必須在Java中完成,所以'Application'對象最可能是可用的。如果沒有,只需在'APP'中創建一個返回'FileInputStream'的方法。請參閱編輯以進行澄清。 – gobernador 2012-04-04 00:18:59
第一個建議的解決方案效果很好。謝謝! – 2012-04-05 04:49:48