flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jude <flexcapaci...@gmail.com>
Subject Re: Guidance needed
Date Thu, 27 Jun 2013 09:07:45 GMT
Hi Mark,

Is it limited to bandwidth issues? Can you save and reuse a local copy of
the array collection (s) before going with a local database? I haven't had
to sync to databases before so I'll leave that to someone else but for the
other areas if they have to do with the array collections, there's a couple
of things you can to improve performance, most of which I'm sure you are
already aware of.

If you know or can limit the query to the server to get only the records
that have changed since the last sync and you've already populated the
array collection then once you get those records you can iterate over them
and call itemUpdated if they already exist.

// loop through and find the items that need updating
var item = collection.findItemByID(id); // find the items that changed
// call item updated on each
filteredCollection.itemUpdated(itemThatChanged, "@value");

// when you're done call refresh
filteredCollection.refresh();


If you are updating a lot of items or if those items use databinding then
you can disable auto update :

filteredCollection.disableAutoUpdate();

// update items in the collection

filteredCollection.enableAutoUpdate();

When using removeAll() on an array collection can be slow sometimes. This
is because it is has to remove any listeners added through databinding. See
this [1]. If you are using databinding in item renderers substitute each
binding with direct assignments in the set data function.

So do this:

            override public function set data(item:Object):void {
                super.data = item;
                if (labelDisplay && item) labelDisplay.text = item.property;

instead of this:

<s:Label text="{data.property}" />

Use AMF when sending data back and forth between the server. JSON data
might be faster and more compact than XML. I think you said you're sending
remote objects already.


[1]
http://stackoverflow.com/questions/5286326/flex-arraycollection-removeall-vs-new-arraycollection

On Mon, Jun 24, 2013 at 1:49 PM, Mark Fuqua <mark@availdata.com> wrote:

> I am looking for some architectural guidance.
>
>
>
> I developed a mobile application using Flex mobile.  It is not very usable.
> This is no fault of Flex, it is the way I designed it.  The application is
> a
> task management application with lots of data exchange with a remote
> server.
>
>
>
>
> During development, it worked OK.some forms were slow to get required data,
> but all in all, being a business application with a captive audience, it
> was
> usable.  However, during real world testing, it was obviously deficient,
> especially in areas with a weak signal.  It is not usable in its present
> form.
>
>
>
> I have two main issues.the first is, I need to run the application with a
> local sqlite database and synch in the background.  I really don't know the
> right way to do this.  But I am thinking the steps are something like the
> following:
>
>
>
> 1.            Add two columns to the required database tables:
> CreatedTimeStamp and MostRecentEditTimeStamp
>
> 2.            Write a script that creates a blank database when the app is
> initially run, which matches the database tables required on the remote
> database (about 15 tables).  Most of the remote tables have auto-increment
> primary keys, so I guess just numeric primary key on the phone.
>
> 3.            Connect to the database and create ArrayCollections for each
> of the database tables.
>
> 4.            Loop over theArrayCollections and add the data to the SQLite
> database tables.
>
> 5.            Then, as the user works with the application, change all my
> remote objects to SQLite queries populating the existing ArrayCollections,
> for the existing forms and lists, which should eliminate the remoteObject
> latency/failures that plague the current version.
>
> 6.            Change all the add/edit functions to include added/edited
> timestamps (to the CreatedTimeStamp and MostRecentEditTimeStamp columns
> mentioned above).
>
> 7.            When the sync occurs, download all newly added records from
> the various tables ( I guess in an order that doesn't violate foreign key
> constraints).
>
> 8.            Upload any newly created records from the phone to the remote
> database.
>
> 9.            Download any edited records changed since last sync to the
> phone.
>
> 10.          Upload any edited records changed on the phone since the last
> sync.
>
>
>
> I am not even going to mention the second issue just yet.this is the big
> one
> and quite a stretch for a hack like me.
>
>
>
> Any guidance, advice, or shortcuts would be greatly appreciated.
>
>
>
> Mark Fuqua
>
>
>
> mark@availdata.com
>
>
>
> 2301 Mount Carmel Road
>
> Parkton,  MD  21120
>
> (410) 215-7356
>
>
>
> www.availdata.com
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message