Revision Flashcards

(58 cards)

1
Q

Pros of Mobile Devices

A
  • Always with Users
  • Internet Access
  • Location Services
  • Sensors (Accelerometer, NFC)
  • Camera & Microphone
  • Free/Low-Cost Apps
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cons of Mobile Devices

A
  • Limited Screen Size
  • Limited Battery Life
  • Limited Processor Speed
  • Limited Network Access
  • Limited Input (Soft Keyboard)
  • Limited Web Browser Functionality
  • Range of Platforms
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Native App Development

A

Build app for specific platform using platform-specific technology apps, programming languages, and SDK

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Pros of Native App Development

A
  • Best Performance
  • Platform-specific UI
  • Supports all OS features
  • Full Access to Hardware Features
  • Reliable, Secure, Responsive
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cons of Native App Development

A
  • Multiple OS-Dependent Apps
  • Cannot Share Code Between Apps
  • Slow Development
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Use Cases of Native App Development

A

Apps with
- Heavy Processing
- Graphics-Heavy Visuals (Games)
- Access to Low-Level APIs e.g. Bluetooth
- Access to Hardware Features

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cross-platform App Development

A

Build app that can run on different platforms using a single codebase written in a non-native intermediate language

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Pros of Cross-platform App Development

A
  • Uniform
  • Budget Efficient
  • Fast Implementation
  • Reusable Source Code
  • One Set of Unit Tests
  • Fast Time to Market
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cons of Cross-platform App Development

A
  • Worse Performance
  • Harder Code Design (Not all is reusable across platforms)
  • Relies on Intermediate Libraries for Device and OS Features
  • Multiple GUIs Needed for Platform Specific Feel
  • Long Wait for New Features
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Use Cases of Cross-platform App Development

A
  • Large Audience
  • Mid-size Business, Low Budget Application
  • Time to Market is more important than sleek look and feel
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hybrid App Development

A

Use web technologies to build apps that are run within a native shell and rendered using an embedded browser

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Pros of Hybrid App Development

A
  • Reusable Code
  • Faster Development Time
  • Leverage Web Libraries e.g. React
  • Can Update without Updating on the App Store
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Cons of Hybrid App Development

A
  • Not all Code is Reusable
  • Speed is Impacted
  • Limited Access to Device and OS Features
  • UI Differs from Native UI
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Use Cases of Hybrid App Development

A

Wide user base
Limited budget and time

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Rapid Mobile App Development (RMAD)

A

Low-code/no-code platforms to build apps using drag and drop tools to use recyclable software components

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Pros of RMAD

A

Lower Investment
Simple Development Process
Low-code/No-code
Reusable Codebase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Use Cases of RMAD

A

Suitable for tight deadlines and fast deliverables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Progressive Web App (PWA)

A

Web applications that behave like native apps. A set of optimal software development practices for making responsive web applications that function without a browser

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Pros of PWA

A
  • Low Maintenance Cost
  • One Codebase
  • Responsive UI
  • Installed in Browser
  • Works Online and Offline
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Cons of PWA

A
  • Limited Functionality
  • Less Efficient
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Android Architecture Stack

A
  • Applications
  • Application Framework
  • Runtime and Platform Libraries
  • Hardware Abstraction Layer
  • Linux Kernel
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Android Stack Layer: Linux Kernel

A

Abstracts device hardware and provides
- Multitasking
- Low-level Core System Services (Memory, Process, Power Management)
- Network Stack
- Device Drivers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Android Stack Layer: Hardware Abstraction Layer

A

Hardware specific layer (each manufacturer develops a dedicated layer) for modules that interface with device components such as camera, microphone, accelerometer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Android Stack Layer: Runtime and Platform Libraries

A

Java Development Libraries: General purpose tasks: Networking, String Handling, File Manipulation

Android Development Libraries: Specific to android development: Graphics Rendering, Text Rendering, Database Access

25
App Compilation
.java -> .class .class -> .dex .dex bytecode is zipped with resource and AndroidManifest.xml to form .apk
26
Android Runtime (ART)
A runtime environment used by apps
27
Ahead-of-Time (AOT) Compilation
Converts DEX Bytecode into native machine instructions: 1. Get APK from App Store 2. Extract .dex from APK 3. AOT: The ART performs a one-time compilation of .dex bytecode into architecture-specific native machine code 4. ELF: Native machine code is stored in the Executable and Linkable Format (ELF), the standard for executable files on Linux 5. Linux Kernel: Loads and manages ELF binaries 6. CPU: Executes machine code
28
Key Features of ART
Efficient Garbage Collection General Development and Debugging Improvements
29
Android Stack Layer: Application Framework
Set of high-level services in which apps are run and managed - Activity Manager: Manages the life-cycle of UI components - Content Providers: Interface for managing and accessing app data e.g. Media - Resource Managers: Manages access to resources e.g. Layouts - Notifications Manager: Provides notification capability - Telephony Manager: Provides network connectivity, call management, SMS messaging, etc.
30
Activity
A single, focused piece of user interaction
31
Fragment
A modular, reusable UI component of an activity
32
Views-Based Framework
Imperative. UI is defined in XML which is then inflated into view objects. Code *explicitly* modifies UI in response to interactions (prone to manual coding errors) Mutate view for example by using `findViewById()` and `setText()`
33
View
Basic building block of UI component, all inherit from the View class. Inheritance is limited to one parent limiting functionality gained
34
Cons of Views-based Framework
- Boilerplate Code: Verbose code - Rigid UI Designs: Dynamic UI requires lots of manual updates, causing complex hard-to-maintain codebases - Performance Overhead: Inflating XML layouts have a performance cost due to the need for parsing - Fragmentation: Activitites and fragments can fragment the code affecting code management
35
Jetpack Compose
Declarative framework
36
Composables
Reusable building blocks relying only on Kotlin APIs
37
Pros of Jetpack Compose
- Declarative Approach: Simpler code, more intuitive, no XML - Less Boilerplate Code: Re-composition means UI automatically updates in response to state changes - Reactive and Dynamic UI: UI reacts to state changes without needing imperative code - Modularity and Reusability: Composable are self-contained and reusable - Material Design: Supports Google's material design - Integration with Views: Can be combined with views-based UI for gradual role out
38
Recomposition
the process of re-executing composable functions when their input data changes
39
Unidirectional Data Flow Pattern
data flows only in a single direction state is stored in parent composable children cannot directly change it. Instead, events trigger state changes and an event handler is called by the child composables Data Flows Down Events Flows Up
40
State Hoisting Pattern
Composable state is handled in the caller function Child is stateless, so state can be shared between other composables Hoist only as high as the closest common ancestor of all components that need it
41
Configuration Change
Occur when device rotates, dark mode is enabled, system-wide font is changed
42
Layers of Modern App Architecture
- Presentation Layer - Domain Layer - Data Layer
43
Presentation Layer
Visualises application state with UI elements and State holder
44
Domain Layer
Optional layer responsible for encapsulating business logic that is reused through an application to avoid code duplication and improve testability
45
Use Case
Encapsulates business logic into a single cohesive operation
46
Data Layer
Consists of repositories and data sources
47
Data Source
A class responsible for managing interactions with one source of data such as a local database or remote API
48
Repository Class
Abstracts and exposes one or many data sources. Centralises data changes so can resolve conflicts between multiple data sources
49
Dependency Injection
Objects receive dependencies as arguments when constructed
50
Service Locator
A central global registry provides dependencies and objects can request services at runtime
51
Why use Third-Party Services
- Simplifies development with pre-built services - Improves app quality: Crash analytics, performance monitoring, A/B Testing - Grow Your App: Analytics
52
UI Thread
Main thread and must stay responsive or the app will freeze (ANR) Application not responding
53
Work Manager
the modern approach to thread management - WorkManager: Main class that scheduels work - Worker: Defines work to be done in`doWork()` method - WorkRequest: Specifies the Worker, and any constraints, retry policies
54
Pros of Work Manager
- backward compatible - Lifecycle-aware and battery efficient - Reliable
55
service
a component for long-running background operations that run without a UI
56
Use Cases of a Service
- Network Transactions (e.g. upload) - File I/O - Playing Music
57
Foreground Service
Show persistant notification and the task is noticable to a user e.g. Music player. OS can’t easily kill these services
58
Background service
Silent work not visible to user