BREW應用間通信之共享文件

上面講到,IFIFO實際上就是一個文件,而且共享文件,即共享駐留數據也是BREW應用間通信最簡單的一種方式。BREW中有三種駐留數據的方式:系統存儲,文件和數據庫。

系統存儲是指通過ISHELL_SetPrefs()和ISHELL_GetPrefs()來實現駐留數據的方法。ISHELL_SetPrefs()和ISHELL_GetPrefs()提供了一種方法來保存包含或讀取應用或類級別首地址的數據結構,相當於VC裏面的串行化,使用起來非常簡便,數據由整個AEE層共享。

通常在手機上還存在shared這樣一個共享目錄,在shared目錄下的所有文件可以被任何應用所訪問(應用至少擁有FILE權限)。所以,約定好一個文件名,兩個或多個應用就可以通過共同訪問該文件進行通信了。Const文件可以允許OEM 減少RAM 的負荷,一般不能對Const文件做刪改,IFILE_Map() 可以用來將Const文件映射到內存,因此Const文件很少用來做通信的載體。IFILEMGR_GetInfo()和 IFILEMGR_GetInfoEx() 支持的文件大小不能超過4GB(BREW3.x之前的版本),文件名的長度也是有限制的,通過ISHELL_GetDeviceInfo(pIShell, pi), pi->wMaxPath 可以得到文件名包括路徑的最大長度.

IDATABASE是一個數據庫接口,多個應用可以共享同一個數據庫。Idatabase可以創建和訪問由 IDBMgr創建並打開的數據庫中的記錄,調用 IDBMGR_OpenDatabase() 打開所需的數據庫可以獲取 Idatabase 接口的。另外,還可以使用 IDBRecord中的函數來訪問各個數據庫記錄的字段。應用程序的權限級別必須是“文件”或“全部”,才能調用此接口中可修改數據庫內容的函數。

IDATABASE_CreateRecord() 函數創建新的記錄並將其添加到數據庫中(IDBRECORD_Remove()用於刪除數據庫中的記錄)。每個記錄可包含一個或多個字段,每個字段由 AEEDBField 結構定義,創建建記錄時,先要填寫 AEEDBField 結構數組,來指定記錄中每個字段的名稱、類型、內容和長度。然後,調用 IDATABASE_CreateRecord()並提供此數組的指針和要包含的 AEEDBField 結構數作爲輸入參數。 IDATABASE_CreateRecord() 將返回指向 IDBRecord 接口實例的指針,可用於訪問和更新記錄的字段。創建或更新記錄時,會爲每個記錄指定字段數和字段類型;並不要求給定數據庫中的全部記錄都具有相同的結構。創建數據庫並添加記錄後,即可使用其他 Idatabase 函數從數據庫中檢索記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章