android introduction
play

Android Introduction Architecture Activities, Lifecycle - PowerPoint PPT Presentation

Android Introduction Architecture Activities, Lifecycle Development Environment 1 Why Android? Pervasive Mobile Platform - Runs on hundreds of millions of mobile phones, tablets - Worlds most popular & frequently installed mobile OS


  1. Android Introduction Architecture Activities, Lifecycle Development Environment 1

  2. Why Android?  Pervasive Mobile Platform - Runs on hundreds of millions of mobile phones, tablets - World’s most popular & frequently installed mobile OS - Open Source (minimum-definition).  Developer Friendly - Familiar language (e.g. Java, Kotlin) - Multi-platform support - Android Studio, IntelliJ support  See http://developer.android.com/tools/index.html 2

  3. Development Environment  Java JDK - https://adoptopenjdk.net/index.html  Android SDK - https://developer.android.com/studio - Included in the Android Studio installation  Development Environment - Plan on using IntelliJ or Android Studio - Examples are provided as IntelliJ projects - https://www.jetbrains.com/idea/download 3

  4. Architecture  Applications are built in Java (or Kotlin) - Android compiler generates an Android Package (.apk file), which contains code, resources etc. - Package is installed using SDK, which sets up environment for that app.  Applications run securely in the environment - Android is a Linux environment where every app is a distinct user! - When the app is installed, permissions are set to restrict access (resources, data). - Every app runs in its own process. - Apps must request access to shares resources (e.g. file system, camera)  As a developer, you create a manifest file in your package that describes how your application should be installed, what permissions it requires. 5

  5. 6

  6. Setup Download and install Java JDK. 1. Download and install Android Studio to get the Android 2. SDK: https://developer.android.com/studio/ IntelliJ embeds an Android plugin that will use the 3. Android SDK. Go to Settings to configure it (next slide). Open a sample project (or create one) to check that it 4. works. 7

  7. SDK Manager Set the path to your Android SDK installation folder Check the APIs you want 8

  8. Setup Android SDK tools are accessed through a drop-down menu in your IDE.  AVD Manager : manage Android Virtual Devices (AVDs) for testing.  SDK Manager : maintaining the SDK itself. 9

  9. AVD Manager 10

  10. Sample Code  File -> Open (Project from Examples Directory)  Run, Select Deployment Target - Can launch AVD or push to connected device 11

  11. Getting Started: Project Wizard  Company Domain - only important if you release your app, can just use something like: cs349.uwaterloo.ca  API to target is the minimum Android version on target devices - Use API 15 for Phone and Tablet (we won’t be doing anything restrictive)  SDK version is the version of the dev tools, libraries etc. - Android Studio defaults to 29  Activity: Whatever you start with, do NOT use fragments 12

  12. Project Structure  Manifest (app/manifests/) - Application setting  Java (app/java/) - (*.java) source code  Resources (app/res/) - layout: (*.xml) UI layout and View definitions - values: (*.xml) constants like strings, colours, … - also bitmaps and SVG images (mipmap*, drawable*, ….) 13

  13. Manifest - Activities  Metadata about the app  App components, Intent filters < application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > < activity android:name=".MainActivity" > < intent-filter > < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > </ application > 14

  14. Manifest – Permissions < manifest > < uses-permission android:name="android.permission.INTERNET" /> < uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> < uses-permission android:name="android.permission.SEND_SMS" /> </ manifest >  Android must request permission to access sensitive user data  User is prompted once on application launch (or on-demand with more recent versions of the OS)  Do not request more than you need (please!) 15

  15. App Resources  Each type of resource in located a specific subdirectory of your project's res/ directory  Access them using resource IDs that are generated in the project's R class app/ manifest/ java/ res/ drawable/ graphic.png layout/ activity_main.xml mipmap/ icon.png values/ strings.xml 16

  16. App Components  An application can consist of multiple “application components”.  Each component is an entry point through which the system or a user can enter or access your application. Components Description Activity Single-screen of an application Service Long-running background process Content provider Provides shared set of application data Broadcast receiver Responds to system broadcast events 17

  17. Activities  The “standard” application component is an Activity  Typically represents a single screen of your application (and you may have multiple activities, one of which will be running at a time). - Not a view, since it can contains both model + view  One activity will be the Main entry point for your application (aka Main). 18

  18. Activity Navigation  You can have multiple activities in your application (e.g. different screens), and switch between them as-needed. - Activities can create other activities (i.e. “back stack” of activities that you can reach by using the back button) - Navigation forward/back through activities is typically triggered by user actions 19

  19. Activity Lifecycle Paused / Stopped Running  Activities have an explicit lifecycle, and have a state reflecting what they are doing (e.g. “started” or “stopped”)  Changing state fires a callback method that corresponds to that state (e.g. going from “stopped” to ”started” causes the onStart() method to fire). https://developer.android.com/guide/components/activities/activity-lifecycle.html 20

  20. Managing the Activity Lifecycle Core callback functions:  onCreate() - being created or launching  onStart() - becomes visible to user  onResume() - prior to user interaction  onPause() - loses focus or background  onStop() - no longer visible to user  onDestroy() - being recycled and freed 21

  21. Interrupted Workflow  Applications can stop at any time (i.e. user quits, OS kills it, user presses the Back button - the activity transitions through the onPause(), onStop(), and onDestroy() callbacks. - the activity is also removed from the stack.  onRestoreInstanceState() is automatically called by the system after onStart().  onSaveInstanceState() is automatically called by the system after onStop().  To preserve simple transient-state data, override these methods - Save data in onSaveInstanceState() - Restore data in onRestoreInstanceState() 22

  22. Interrupted Workflow  Applications can stop at any time (i.e. user quits, OS kills it, user presses the Back button - the activity transitions through the onPause(), onStop(), and onDestroy() callbacks. - the activity is also removed from the stack.  onRestoreInstanceState() is automatically called by the system after onStart().  onSaveInstanceState() is automatically called by the system after onStop().  To preserve simple transient-state data, override these methods - Save data in onSaveInstanceState() - Restore data in onRestoreInstanceState() 23

  23. Intents  An Intent is a messaging object you can use to request an action from another application component - Starting an activity - Starting a service - Delivering a broadcast  This allows an application to use other application services! e.g. Instagram app can request access to the Camera activity to take a picture. - Eliminates the need to have functionality embedded in an application. - Allows the OS to control access/permissions to services.  We use intents to pass data between activities. - Basically a data structure holding an abstract description of an action https://developer.android.com/guide/components/intents-filters.html 24

  24. Intents  Use startActivity() or startActivityForResult() methods to launch an activity with an intent. - Use onActivityResult() to retreive the result of the activity launched with startActivityForResult() - Can call explicit named activity (e.g. mySettingsActivity) or an implicit activity based on its capabilities (e.g. some camera activity) 25

  25. Intents - Explicit intent that starts a download background service. - Implicit intent that sends fires an intent to send a text message. 26

  26. Intents - Start an activity to take a picture and retreive it - Retrieve the taken photo from the camera activity that took the photo 27

  27. Android UI Development View hierarchies Using different layouts Using UI widgets MVC 29

  28. Building User Interfaces android.view.View  Base widget class (i.e. drawing and event handling)  Subclasses: android.widget.Button android.widget.ImageView android.widget.ProgressBar Android.widget.TextView ... android.view.ViewGroup  Abstract container class that includes the layout  Subclasses: LinearLayout, RelativeLayout, GridLayout, … 30

Recommend


More recommend