June 15, 2011
I have just completed an update to QC Native for those of you who are doing native Android and/or iOS development. Download it from here: http://goo.gl/P7s6D
As with the previous version of QC Native all threading is done for you. ValCO’s and BCO’s will run in a background thread and VCO’s will run in the UI thread on Android, JavaSE, and iOS. No threads will be used when you use the qc.jar file in an Enterprise Java environment since they are not needed there.
The Control Objects in QC Native now use HashMap/NSMutableDictionary instead of ArrayList/NSArray. This allows you to have more control over the data used in your Control Objects. Another change is that you now add the results of your calculations in your BCO’s, ValCO’s, and VCO’s to the parameters HashMap/NSMutableDictionary instead of returning them from your handleIt methods. Now you return null to terminate a control stack and any value to continue.
This change will give us a strong base to build on for the foreseeable future for both the native and hybrid libraries.
January 15, 2011
QC 1.6.7 has been uploaded. It includes a complete rewrite of the way your QCAndroid apps are compiled from within xCode. I think you will find compiling much better. It also includes a native Android template that allows you to build QC applications in Androids’ native Java along side the Objective-C native template for iOS apps.
Just like in QC Native for iOS apps created using this QC Native for Android template ‘pre-threads’ your application for you. This means that any code that you write that is not directly related to updating the view is run in helper threads. Any code you write that updates the view will run in the main view thread just like the native QC iOS apps.
Build your Control stacks in either language and your Validation and Business Control Objects, including db and server/service access, will be run on background, helper threads and then when the View Control Objects are executed they will be run in the main-view thread.
This means that your applications’ user experience is snappier since the main-view thread is only blocked when the view is being updated.
I will be covering the basic structure of Android Native QC apps and how to write them at the Android Developer Conference in March.
I will be covering the basic structure of iOS Native and Hybrid QC apps at the iPhone Developers Conference in April.
More tutorials, when I get them done, will be available on the wiki.
I have also uploaded QuickConnectFamilyPC_1.6.7 for those of you who want to develop using Eclipse rather than Xcode. It includes a few examples of hybrid apps and instructions for how to use QC in Eclipse.
I’d love to see you at the developer conferences and get feedback in addition to what I receive via the Google group and this blog.
January 6, 2011
January 4, 2011
December 30, 2010
All User Interface libraries, regardless of platform, require that the UI components start their updates from the ‘main’ thread. Sometimes this is referred to as the UI thread but it is actually the main thread of the application.
What most people that are creating mobile apps don’t realize is that if they are using the main thread to do significant computation such as remote server access, XML parsing, database access, number crunching, etc. is that this makes their User Interface slow and chunky. The ywill notice the unresponsiveness of their UI but will not know why it isn’t smooth. They generally tend to come to believe that the problem is that the processors are not fast enough to do what they want to do. This is generally not the case.
What they really need to do is move the computational portions of their apps into background (worker) threads and let the UI thread remain responsive to the user. This can be a challenge that they are unwilling to attempt due to the perceived difficulty of implementing threading.
Starting with QuickConnect 1.6.5 I have made the native iOS and Android application templates pre-threaded for both iOS and Android apps. This means that you, as a developer, no longer need to worry about creating the background threads and then executing UI updates on the main thread for your mobile apps.
When you use one of the mobile native templates in QC all of your validation and computation code is automatically executed on a background thread. When this portion of your application is complete and you make a UI update the framework automatically causes your update to use the main thread. You won’t even be aware of the change.
All of this is triggered every time you use the QC framework handleRequest method. This is in addition to linearizing your asynchronous HTTP remote access calls and an easy to use SQLite wrapper. With this kind of a head start it becomes much easier for you to create highly responsive, high quality apps in a much shorter time.
I will soon be making this multi-threading available to all of you using the hybrid iOS and Android templates as well. It should make a huge difference in your execution speeds.
December 23, 2010
I have just posted the 1.6.4 version of QC on SourceForge. It includes some defect fixes and some minor additions, and a few big changes. QC 1.6.4 requires the iOS 4.2 SDK.
The big changes are regarding the native application templates. You can now use the same design to create Objective-C iPhone, iPad, and Universal iPhone/iPad apps that you have been using to create your hybrid applications.
These native iOS apps come ‘pre-threaded’. Every time you call handleRequest your command stack is executed on a worker thread. Any of your ViewControlObjects that you create for your control Stack are executed in the main thread since it is the only one that is allowed to update the User Interface. All other behavior is done on a worker thread and you don’t have to worry about how to set it up, make it go, or make it stop.
Just as with the hybrid apps you’ve been creating with QC all of your async calls to HTTP servers, portals, etc. are linearized for you. You never need to write another callback function!
In addition to making your remote HTTP calls easier all of the templates for native QuickConnect applications also include support for both direct SQLite access and CoreData.
With a little time working in Interface Builder and putting together some CoreData objects your app is up and running.
Examples are already in the download for all of these native iOS templates. Check them out and see how easy native iOS apps can be.
The next release will have native multi-threaded Android applications as well.
One other change is that the PHP template has been updated. Take a look at the example in the download.