The native Flash Lite 3.0 player included with the newest firmware for the N95 8GB (Firmware v15.0.015) appears to have a severe XMLSocket bug. When calling the XMLSocket.send() method, the device will hang for an inordinate amount of time after the call. All redrawing of the UI, processing in actionscript and MovieClip animations of any kind remain on hold for up to a second or two, and will then recommence.
This poses a major problem in the development of our SWF, as we commonly make XMLSocket calls all the while the UI is supposed to remain interactive.
It's important to note that the problem is NOT present on an N95 running the exact same SWF in the flash lite 3.0 developer edition player. we are running the same code side by side on each of the phones, hitting the same xml socket server. the crossdomain.xml file located in the apache server on the computer running the socket server is configured to allow connections from all domains.
To demonstrate the issue, we created a little test swf that includes a movieclip of a little rotating rectangle on an infinite loop, to show the status of the UI in terms of redrawing. then, some actionscript in the first frame of the root clip establishes a connection to the socket server, and calls the send() method of the XMLSocket connection, 3 times (3 times rather than once, just to embellish the effect of the lag/redraw issue). On the N95 (FL3.0 developer edition) the animation continues to spin without interruption throughout the 3 send() calls to the socket server. On the N95 8GB (native flashlite 3.0 player), the animation freezes for a couple of seconds before resuming.
any one have any thoughts or experience with this particular bug?
All we can determine is that it's definitely associated with (and only with) the XML socket send() method. Whether or not there is an "onData" handler present has no effect (negative or positive). It is interesting to note that if you do introduce an onData handler, the animation resumes at the same time the onData handler is called -- meaning it's actually taking the N95 8GB device longer to "send" data to the xml server, in addition to it causing the UI to freeze.
To duplicate this experiment yourself, this is the actionscript we placed on the first frame:
Change the IP Address to that of your own xml socket server, then just place (also in the first frame) a little animation on an infinite loop. send the SWF to the phone and play it. once the phone has asked for a valid WiFi access point, and established a connection to it, the animation should freeze for a few seconds on an N95 8GB running the native flash lite 3.0 player, but not on the N95 running the flash lite 3.0 dev. edition.Code:var sock:XMLSocket = new XMLSocket(); sock.connect("127.0.0.1", 3000); sock.onConnect = function() { sock.send("test1"); sock.send("test2"); sock.send("test3"); }
Thanks,
Ryan Rowe
Frog Design



