Thread: [Logicmail-devel] Progress report - 2011-07-15
Brought to you by:
octorian
From: Derek K. <dko...@lo...> - 2011-07-16 02:20:51
|
This progress report is probably not something I want to make a big blog post about so far, but anyone working with the code should probably know about it. As some of you may know, I'll be giving a presentation at the BlackBerry Developer's Conference in San Francisco in October. For my actual presentation, RIM finally finished giving me the necessary resources and deadlines this evening. Of course they don't like to actually give you a deadline until its right around the corner. Right now, I need to have my draft submitted by July 22nd and the final presentation by August 12th. (If they extend it, they'll wait until I've already rushed to meet the current deadline.) So, I plan to be dedicating almost all of my spare time (that would otherwise go to LogicMail) to this over the next week or two. Okay, I think the more important thing for everyone to know is what I've done since that last big blog post from last weekend. I just committed code to give the application the ability to auto-start on device boot, and to prevent it from always wanting to exit when the user closes the app's home screen. The auto-start feature itself is a configuration option, and disabled by default (like all the nice 2.1 features, until we fully test them and integrate them into the setup wizard). The home screen close action now simply backgrounds the app. The "exit" option on the menu will still cause the app to quit. At a code-level, here's what I did: I completely refactored the code in LogicMail.java (the main class of the application), which handles app startup, to make it far more readable. I then added a new singleton container object (LogicMailRuntimeState) to manage all application state that is kept within the runtime store. (It was previously just a hashtable of notification sources.) The application's autostart entry point previously just fixed icons, registered notification sources, and exited. Now, if auto-start is configured by the user, it doesn't exit. Instead, it will completely start the application in the background, and put a reference to the UiApplication instance in the runtime store container I mentioned above. The application's normal entry point now acts a little differently as well. It first checks the runtime store container for an existing instance, and simply foregrounds it if one exists. If one does not exist, then it starts the application just like it always used to do. In implementing this, there was one problem of note that I had to work around: The autostart entry point executes before all the device's filesystems (e.g. SDCard) are mounted. I had to fix some issues so that LogicMail could handle this case. (Filesystems are only used for local folders and message content cache, so the app can work fine without them. I also already handled filesystems disappearing/reappearing while the app was running, so a lot of the work for this was already done.) (I also discovered an ordering-related bug with folder cache loading, that didn't manifest under any conditions but auto-start folder refresh, check the commit log for details.) Okay, so where are we now? I still need to make sure all of this works on a real device. I also still need to test behavior during desktop manager synchronization, since I now need to expect the app to actually be running during this as a more common use case. I hope that all made sense :-) -- ---------------------------- Derek Konigsberg dko...@lo... ---------------------------- |
From: Wes K. <wes@KeeneServices.com> - 2011-07-16 02:45:41
|
Sure sounds like you've done a ton of work. You rock. Having only just barely messed with BB development, I realize it's a massive pain (to the point where I'm not positive I want to continue to try). I have been considering a developer conference. Is Blackberry Developer Conference any good? Have you been to them previously? Wes -----Original Message----- From: Derek Konigsberg [mailto:dko...@lo...] Sent: Friday, July 15, 2011 9:21 PM To: log...@li... Subject: [Logicmail-devel] Progress report - 2011-07-15 This progress report is probably not something I want to make a big blog post about so far, but anyone working with the code should probably know about it. As some of you may know, I'll be giving a presentation at the BlackBerry Developer's Conference in San Francisco in October. For my actual presentation, RIM finally finished giving me the necessary resources and deadlines this evening. Of course they don't like to actually give you a deadline until its right around the corner. Right now, I need to have my draft submitted by July 22nd and the final presentation by August 12th. (If they extend it, they'll wait until I've already rushed to meet the current deadline.) So, I plan to be dedicating almost all of my spare time (that would otherwise go to LogicMail) to this over the next week or two. Okay, I think the more important thing for everyone to know is what I've done since that last big blog post from last weekend. I just committed code to give the application the ability to auto-start on device boot, and to prevent it from always wanting to exit when the user closes the app's home screen. The auto-start feature itself is a configuration option, and disabled by default (like all the nice 2.1 features, until we fully test them and integrate them into the setup wizard). The home screen close action now simply backgrounds the app. The "exit" option on the menu will still cause the app to quit. At a code-level, here's what I did: I completely refactored the code in LogicMail.java (the main class of the application), which handles app startup, to make it far more readable. I then added a new singleton container object (LogicMailRuntimeState) to manage all application state that is kept within the runtime store. (It was previously just a hashtable of notification sources.) The application's autostart entry point previously just fixed icons, registered notification sources, and exited. Now, if auto-start is configured by the user, it doesn't exit. Instead, it will completely start the application in the background, and put a reference to the UiApplication instance in the runtime store container I mentioned above. The application's normal entry point now acts a little differently as well. It first checks the runtime store container for an existing instance, and simply foregrounds it if one exists. If one does not exist, then it starts the application just like it always used to do. In implementing this, there was one problem of note that I had to work around: The autostart entry point executes before all the device's filesystems (e.g. SDCard) are mounted. I had to fix some issues so that LogicMail could handle this case. (Filesystems are only used for local folders and message content cache, so the app can work fine without them. I also already handled filesystems disappearing/reappearing while the app was running, so a lot of the work for this was already done.) (I also discovered an ordering-related bug with folder cache loading, that didn't manifest under any conditions but auto-start folder refresh, check the commit log for details.) Okay, so where are we now? I still need to make sure all of this works on a real device. I also still need to test behavior during desktop manager synchronization, since I now need to expect the app to actually be running during this as a more common use case. I hope that all made sense :-) -- ---------------------------- Derek Konigsberg dko...@lo... ---------------------------- ------------------------------------------------------------------------------ AppSumo Presents a FREE Video for the SourceForge Community by Eric Ries, the creator of the Lean Startup Methodology on "Lean Startup Secrets Revealed." This video shows you how to validate your ideas, optimize your ideas and identify your business strategy. http://p.sf.net/sfu/appsumosfdev2dev _______________________________________________ Logicmail-devel mailing list Log...@li... https://lists.sourceforge.net/lists/listinfo/logicmail-devel |
From: Wes K. <wes@KeeneServices.com> - 2011-07-16 02:46:09
|
I should have looked more closely before sending that last mail. Erroneously, I assumed hitting Reply would direct me to Derek's address. I should have checked more closely. Accept my apologies for spamming everyone. Wes -----Original Message----- From: Wes Keene Sent: Friday, July 15, 2011 9:33 PM To: 'log...@li...' Subject: RE: [Logicmail-devel] Progress report - 2011-07-15 Sure sounds like you've done a ton of work. You rock. Having only just barely messed with BB development, I realize it's a massive pain (to the point where I'm not positive I want to continue to try). I have been considering a developer conference. Is Blackberry Developer Conference any good? Have you been to them previously? Wes -----Original Message----- From: Derek Konigsberg [mailto:dko...@lo...] Sent: Friday, July 15, 2011 9:21 PM To: log...@li... Subject: [Logicmail-devel] Progress report - 2011-07-15 This progress report is probably not something I want to make a big blog post about so far, but anyone working with the code should probably know about it. As some of you may know, I'll be giving a presentation at the BlackBerry Developer's Conference in San Francisco in October. For my actual presentation, RIM finally finished giving me the necessary resources and deadlines this evening. Of course they don't like to actually give you a deadline until its right around the corner. Right now, I need to have my draft submitted by July 22nd and the final presentation by August 12th. (If they extend it, they'll wait until I've already rushed to meet the current deadline.) So, I plan to be dedicating almost all of my spare time (that would otherwise go to LogicMail) to this over the next week or two. Okay, I think the more important thing for everyone to know is what I've done since that last big blog post from last weekend. I just committed code to give the application the ability to auto-start on device boot, and to prevent it from always wanting to exit when the user closes the app's home screen. The auto-start feature itself is a configuration option, and disabled by default (like all the nice 2.1 features, until we fully test them and integrate them into the setup wizard). The home screen close action now simply backgrounds the app. The "exit" option on the menu will still cause the app to quit. At a code-level, here's what I did: I completely refactored the code in LogicMail.java (the main class of the application), which handles app startup, to make it far more readable. I then added a new singleton container object (LogicMailRuntimeState) to manage all application state that is kept within the runtime store. (It was previously just a hashtable of notification sources.) The application's autostart entry point previously just fixed icons, registered notification sources, and exited. Now, if auto-start is configured by the user, it doesn't exit. Instead, it will completely start the application in the background, and put a reference to the UiApplication instance in the runtime store container I mentioned above. The application's normal entry point now acts a little differently as well. It first checks the runtime store container for an existing instance, and simply foregrounds it if one exists. If one does not exist, then it starts the application just like it always used to do. In implementing this, there was one problem of note that I had to work around: The autostart entry point executes before all the device's filesystems (e.g. SDCard) are mounted. I had to fix some issues so that LogicMail could handle this case. (Filesystems are only used for local folders and message content cache, so the app can work fine without them. I also already handled filesystems disappearing/reappearing while the app was running, so a lot of the work for this was already done.) (I also discovered an ordering-related bug with folder cache loading, that didn't manifest under any conditions but auto-start folder refresh, check the commit log for details.) Okay, so where are we now? I still need to make sure all of this works on a real device. I also still need to test behavior during desktop manager synchronization, since I now need to expect the app to actually be running during this as a more common use case. I hope that all made sense :-) -- ---------------------------- Derek Konigsberg dko...@lo... ---------------------------- ------------------------------------------------------------------------------ AppSumo Presents a FREE Video for the SourceForge Community by Eric Ries, the creator of the Lean Startup Methodology on "Lean Startup Secrets Revealed." This video shows you how to validate your ideas, optimize your ideas and identify your business strategy. http://p.sf.net/sfu/appsumosfdev2dev _______________________________________________ Logicmail-devel mailing list Log...@li... https://lists.sourceforge.net/lists/listinfo/logicmail-devel |