The mobile competencies defined on this page provide a more detailed view of the outcomes
for the course. These relate to your underlying knowledge of mobile application development,
and consequently to your understanding of when a cross-platform tool is appropriate, and
when native apps are appropriate.
These competencies should be augmented by a study of mobile runtime environments: How are
apps executed on the target mobile device, and what are the corresponding performance
trade-offs? Ser423 focuses on the competencies defined below by contrasting native
mobile app developement on Android and iOS.
- What are the boundaries for native mobile apps?
- What should a developer know? Mobile Competencies
- MVC - Model, View, Control.
Knowledge of and ability to apply the Model, View and Controller software architectural
pattern to mobile application development on both iOS and Android.
The different roles that the controller plays; data source for display
controls, event handler for button clicks, selections and other touch
events; notifiers and receivers of system-wide events.
- iOS App Delegate and Android Main Activity.
Knowledge of and ability to apply application life-cycle and view/
activity life-cycle for both iOS and Android. Knowing which life-cycle methods are called
by the system, when they are called, and the ability to implement the methods
to accomplish appropriate mobile application behavior.
Knowledge of and ability to utilize the basic building-block
classes for creating apps (for example in Android: Activity, Fragment,
Service, Content Provider, Notifications, Intents).
- UI Components, Their Layout, and Interactions with Your Apps
Control Logic. Knowledge of user-interaction design process and the platform specific
tools and components for creating an effective mobile application. Knowing the variety of
UI controls including Button, TextField, Picker, Progress Bar, Table,
Navigation Bar, Tab Bar, List, and Menu. Knowledge of the
landscape of controls as well as having experience with
constructing and wiring-up a control's data-source and event handlers.
Understanding types of events can be handled? How swipes,
pinches, and expansions are effectively handled? Applying
layouts and grouping controls.
- Database. Both iOS and Android include facilities for
persistent data storage in a Sqlite database.
Ability to display, manipulate (create update, insert, query, and delete)
app-specific information kept in a Sqlite database.
This is a sub-category of managing an app's underlying data model,
but an important capability of both major platforms.
Manage initialization of a database from the app bundle to a location where the
database can be modified in a manner that allows
graceful upgrade of the app. Application of other available forms of persistent data
storage on the platform. In iOS, an understanding of the trade-offs of using
Sqlite as opposed to Apple's Core Data.
- Off-Device Communication. Communicate with an off-host
server or another mobile device.
HTTP, json/jsonRPC, tcp/ip sockets,
api-specific communications, and peer-to-peer discovery and
communications; Utilize appropriate platform-specific
guidelines and features (Android Services, for example) allowing your
app to communicate with distributed services.
- Multi-Threading and Asynchronous Computations.
Creating a thread, service, asynchronous call, and
related handlers (to access the UI thread with results), using the iOS
run-loop, queues, and Timers. The importance of not performing blocking operations
on the UI thread, and the conflicts that arise since UI controls can only
be modifed by the UI Thread.
Use of Android's AsyncTask, why its so important,
and mechanics for accomplishing the same on iOS. In particular, an understanding
of Swift and its Escaping Closures: Why, and how they are used.
- Location Services, other On-Board devices. Know how to use location services on
both iOS and Android platforms.
iOS abstraction for location services as compared to Android. Level of control versus
abilty to get fine-grained information, and the resulting requirements on the
Android's open platform characteristics, and how they differ from the more tightly
controlled iOS platform. The implications of this
on access to location providers, and other available information, devices, and
- Associated Devices.
Wearables and the distribution of an App between a mobile device and a wearable.
Communication, notification and related issues.
- On-board Inter-app Communications.
Both platforms support access to calendars, contacts, and related
information. But, also understand the limitations. iOS and Android have
SDK classes for your app to share its information with other interested apps.
Android Content Provider class and its use. iOS shared files. On both
platforms, utilizing components of another app, such as adding a new contact.
- Runtime versus Development. What are the major build-phases
for creating an app/bundle, how is debugging accomplished?
In an important way, app development is very similar to
embedded systems programming -- especially on iOS.
Expand All Nodes |
Collapse All Nodes
These pages are a work in progress. See an error, let me know. Thanks.
Email: Tim@asu.edu | Ser423 Home