2012-03-30 78 views
0

我正在寫一個應用程序和一個需要數據的歡迎小部件。這些數據通過網絡下載。我打算使用IntentService來下載。該服務將數據保存爲文件。該文件然後由App和小部件使用。如何在窗口小部件,服務和應用程序之間共享文件?

如何防止應用程序和小部件在服務寫入時讀取該文件?

如何防止服務在應用程序或小部件正在讀取文件時寫入文件?

謝謝!

回答

1

考慮延長Application和聲明的字段用於讀取和寫入權限:

public class APP extends Application { 
    boolean motherMayI; 

    ... 
} 

然後,每當你打開一個FileInputStreamFileOutputStream

... 
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一個實例。

+0

好吧,這看起來像一個簡單而好的解決方案。但我不知道應用程序對象的生命週期。當沒有創建活動並僅創建小部件時它是否可用? – 2012-04-03 06:20:21

+0

我不知道你的問題的確切答案,但這是我的想法:小部件讀取一個文件,因此必須打開一個'FileInputStream'。這必須在Java中完成,所以'Application'對象最可能是可用的。如果沒有,只需在'APP'中創建一個返回'FileInputStream'的方法。請參閱編輯以進行澄清。 – gobernador 2012-04-04 00:18:59

+0

第一個建議的解決方案效果很好。謝謝! – 2012-04-05 04:49:48

相關問題