Re: iOS app launching speed
Re: iOS app launching speed
- Subject: Re: iOS app launching speed
- From: Alex Zavatone <email@hidden>
- Date: Tue, 15 May 2012 14:18:45 -0400
On May 15, 2012, at 1:16 PM, Conrad Shultz wrote:
> Responses below.
>
> (Sent from my iPad.)
>
> --
> Conrad Shultz
>
> On May 15, 2012, at 9:48, Alex Zavatone <email@hidden> wrote:
>
>> Very enlightening Fritz. Thanks.
>>
>> One approach I took on purpose was to use a synchronous load of a JSON data set on startup.
>>
> Given your statement below I interpret this to mean that you are doing a synchronous download, not just synchronous deserialization. Never, ever do synchronous network I/O on the main thread - there is no guarantee that it will EVER complete. This applies throughout, not just at launch.
Yes, and I've tested it and we haven't had a problem with this. I trust your advice, yet all I can see is that if the data transmission fails mid 4KB data transfer, it would hang. In the case where the URL is invalid or unreachable, we have a dict to read from on the device.
In any case, your advice seems perfect to add to the task list when we update the app.
>> I didn't want to display the main screen (TVC), until the main data had loaded (a 4 KB data set) and serialized.
>>
> Why? This directly contravenes the Human Interface Guidelines for the reasons Fritz indicated. You should display a non-localized (i.e. text-free) image of a blank TVC if that's the first screen.
Well, the Apple HUI guidelines have been taking some strange directions recently on the Mac end of things. I'm sticking with what I know will provide a tried and true expected (good) user experience.
I'm doing it because it's simply lame to display an empty TVC and then have it fill in as content appears like an HTML page.
If I have the option to display the complete data in the TVC view, I'm going to opt over that.
>> I'm wondering if with a larger data set, the approach should be to have the first scene use the same graphic as the launch screen, fire off an async http load (through GDC or which preferred method?), display a little spinner if the delay takes longer then 1.25 seconds, then segue to the TVC with data when it loads serializes and plops itself into my data singleton.
>>
> Well, first, as discussed, don't use a launch/splash screen.
I'm missing your point. Are you saying don't use a graphic (Default.png) when the app launches or the approach I used back last century with Director?
> What occurs to me is that you really only need wait until you have a screen of data. I'm not sure whether your data model can be easily broken into chunks, but the best approach would probably be to initially fetch only the data for the first, say, 10 rows. Once processed you would display them and start loading the remaining data in the background. That way, if the user doesn't scroll down too quickly they will have the illusion of the whole data set having loaded immediately.
>
> If they do scroll fast enough to hit unavailable rows you just display a placeholder until the real data can be swapped into place.
>
>> Does that sound like a sane approach, overengineering or completely off base?
>
> Responsiveness is one of the most important usability traits, particularly on a mobile device. I'd say you're nowhere near the point of overengineering so long as your goal is responsiveness.
Thanks much. I'm looking forwards to our next projects that have insane amounts of data for a mobile experience.
Cheers,
- Alex Zavatone
defaults write -g NSDisableAutomaticTermination -bool yes
defaults write -g NSScrollViewRubberbanding -bool no
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden