SAP OData offline store在Android平臺的技術實現

i042416發表於2020-09-25

I am studying Kapsel OData offline plugin recently. In  SAP help the source code of OData.js is provided:


SAP OData offline store在Android平臺的技術實現


The source code clearly conveys the idea documented in SAP help: “When an offline store is first opened, it synchronizes with the OData producer. OData requests made against this plugin use the available open offline stores.“.

And I am curious how this offline store is opened in the real application. So I use a CRM Fiori offline application to have a look.

(1) In offline project folder there is a config.xml, which defines the entry point for offline application access, the index.html file.


SAP OData offline store在Android平臺的技術實現


(2) Open this index.html, there is a script file “createStores.js”:


SAP OData offline store在Android平臺的技術實現


This file has constructed an object sap.smp.registration:


SAP OData offline store在Android平臺的技術實現


There is a public method setup exposed which accepts an array for offline store collection and call a private method _setupStore one by one. Once the asynchronous setup process is done successfully, callback success is called.


SAP OData offline store在Android平臺的技術實現


In implementation of _setupStore, the sap.OData.createOfflineStore(properties) and sap.OData.applyHttpClient() mentioned in sap help could be found.


SAP OData offline store在Android平臺的技術實現


(3) back to index.html, there is a file contentplace.js:


SAP OData offline store在Android平臺的技術實現


In this file, offline store will be opened in line 14, and application specific initialization is called in callback function defined in line 5.


SAP OData offline store在Android平臺的技術實現


(4) finally, the createContentPlaceFunction is called in index.html in line 196:


SAP OData offline store在Android平臺的技術實現


(5) Now check how OfflineStore open is implemented in Android platform via Java:


SAP OData offline store在Android平臺的技術實現


In line 215, offline store instance is created and a listener is registered, since open operation is done asynchronously:


SAP OData offline store在Android平臺的技術實現


And open operation is started here:


SAP OData offline store在Android平臺的技術實現


Check in ODataOfflineStore class, a new thread is created to perform open action:


SAP OData offline store在Android平臺的技術實現


In run method, the call is delegated back to ODataOfflineStore.openStoreSync:


SAP OData offline store在Android平臺的技術實現


The core open operation is done in this.store.open:


SAP OData offline store在Android平臺的技術實現


If open is done successfully, the listener registered in ODataOfflineStore instance will be notified with ODataOfflineStoreOpen state:


SAP OData offline store在Android平臺的技術實現


The core implementation of open method in Store class is implemented natively and could not be visible in Java stack:


SAP OData offline store在Android平臺的技術實現


要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

SAP OData offline store在Android平臺的技術實現


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2724090/,如需轉載,請註明出處,否則將追究法律責任。

相關文章