an overview of the android programming · android operating system (1/2) • google’s linux based...
TRANSCRIPT
![Page 1: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/1.jpg)
An Overview of the Android Programming
Hooman Peiro SajjadKTH/ICT/SCS
HT 2016
ID2212 Network Programming with JavaLecture 14
![Page 2: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/2.jpg)
References
• http://developer.android.com/training/index.html
• Developing Android Apps by Google (online course)
• Course ID2216 Developing Mobile Applications
– Offered by the Communication Systems department
– Course responsible: Associate Professor Konrad Tollmar
2Lecture 14: An overview of the Android Programming
![Page 3: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/3.jpg)
Outline
• Mobile Web Apps vs. Native Apps
• Android Platform
• Android Programming
• User Experience
3Lecture 14: An overview of the Android Programming
![Page 4: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/4.jpg)
Mobile Web App / Native App
4Lecture 14: An overview of the Android Programming
![Page 5: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/5.jpg)
Mobile Web Apps (1/2)
• Accessing browser-based internet services from a
handheld mobile device
• Core technologies: HTML, CSS and JavaScript
55Lecture 14: An overview of the Android Programming
![Page 6: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/6.jpg)
Mobile Web Apps (2/2)• Advantages*:
– Cross-platform compatibility– Cheaper and easier to maintain– Simple and ubiquitous access
• Disadvantages:– Requires customization across different browser versions– Limited access to mobile’s hardware and software– Generally requires internet connection
* www.lionbridge.com: Mobile Web Apps vs. Native Apps: How to Make the Right Choice
66Lecture 14: An overview of the Android Programming
![Page 7: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/7.jpg)
Mobile Native Apps• Built specifically for a particular device and operating
system
• Advantages:– Leverage the device specific hardware and software– Work offline– Better visibility in app stores, making money immediately
• Disadvantages:– Different versions of the app for different platforms– Keeping apps up to date is costly– Content publishers have to share information about their
subscribers with the app store
77Lecture 14: An overview of the Android Programming
![Page 8: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/8.jpg)
A Sample Architecture of a Mobile Application
88Lecture 14: An overview of the Android Programming
![Page 9: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/9.jpg)
Overview of Android Platform
• Android Operating System
• Application Lifecycle
99Lecture 14: An overview of the Android Programming
![Page 10: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/10.jpg)
Android Operating System (1/2)• Google’s Linux based open-source OS that includes:
– Linux kernel optimized for mobile and embedded devices– Open-source application development libraries such as SQLite,
OpenGL, and a media manager– A runtime to host and execute Android applications, including Android
Runtime (ART)– An application framework to expose system services to the application
layer, including the window manager and location manager, databases, telephony and sensors
– A user interface framework used to host and launch applications– A set of core pre-installed applications
1010Lecture 14: An overview of the Android Programming
![Page 11: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/11.jpg)
Android Operating System (2/2)
1111Lecture 14: An overview of the Android Programming
![Page 12: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/12.jpg)
Dalvik Virtual Machine (1/2)
• The process virtual machine (VM) in Google's Android
operating system
• Runs the apps on Android devices.
• Programs are commonly written in Java and compiled to
bytecode.
1212Lecture 14: An overview of the Android Programming
![Page 13: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/13.jpg)
Dalvik Virtual Machine (2/2)
• Then converted from Java Virtual Machine-compatible
.class files to Dalvik-compatible .dex (Dalvik Executable)
files before installation on a device.
• In Android 5, a new virtual machine – Android Runtime
(ART) – replaced Dalvik as the platform default.
1313Lecture 14: An overview of the Android Programming
![Page 14: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/14.jpg)
Application Lifecycle (1/2)• Android applications have limited control over their own
lifecycle.
• Each application runs in its own process.
• Applications have different priorities.
1414Lecture 14: An overview of the Android Programming
![Page 15: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/15.jpg)
Application Lifecycle (2/2)• Android can kill applications without warning, to free
resources for higher-priority applications.
• An application’s priority is equal to that of its highest-priority component.
• It’s important to structure the application to ensure that it has the right priority for the work it’s doing.
1515Lecture 14: An overview of the Android Programming
![Page 16: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/16.jpg)
Application Lifecycle: Application States (1/3)
1616Lecture 14: An overview of the Android Programming
Figure taken from “Professional Android 4 Application Development (3rd Edition)”.
![Page 17: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/17.jpg)
Application Lifecycle: Application States (2/3)
• Active: includes application components the user is interacting
with.
• Visible: those activities which aren’t in the foreground but still
can affect what the user sees on screen.
• Started service: processes hosting services.
• Background: processes hosting Activities which aren’t visible
and don’t have any running services.
• Empty: a process having no active application component
1717Lecture 14: An overview of the Android Programming
![Page 18: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/18.jpg)
Application Lifecycle: Application States (3/3)
And now let’s watch an example!
1818Lecture 14: An overview of the Android Programming
![Page 19: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/19.jpg)
Android Programming
• Android SDK
• Application Model and Components
• Processes and Threads
• Permissions
• Networking
• Location
1919Lecture 14: An overview of the Android Programming
![Page 20: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/20.jpg)
Development Environment
• First, download Android Studio. It includes:
– Integrated Development Environment (IDE)
– Android SDK Tools
– Android Platform-tools
– The latest Android platform
– The latest Android system image for the emulator
• Notice that, you need to have JDK installed beforehand.
20Lecture 14: An overview of the Android Programming
![Page 21: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/21.jpg)
Android SDK (1/3)
• Provides the API libraries and developer tools necessary
to build, test, and debug apps for Android.
• Includes:– Build Tools: all the tools required to compile and build the app.
– SDK Tools: Contains main tools for debugging and testing, plus other
utilities that are required to develop an app.
21Lecture 14: An overview of the Android Programming
![Page 22: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/22.jpg)
Android SDK (2/3)
– SDK Platform-tools: Contains platform-dependent tools for developing
and debugging your application.
– Documentation: the latest documentation for the Android platform APIs.
– SDK Platform: It includes an android.jar file with a fully compliant
Android library.
– System Images: Required system images for the Android emulator.
– Google APIs: APIs which adds special Google features to your apps.
22Lecture 14: An overview of the Android Programming
![Page 23: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/23.jpg)
Android SDK (3/3)
– Android support: a set of code libraries that provide backward-
compatible versions of Android framework APIs as well as features that
are only available through the library APIs
– Google Play Billing: Provides the static libraries and samples that allow
you to integrate billing services in your app with Google Play.
– Google Play Licensing: Provides the static libraries and samples that
allow you to perform license verification for your app when distributing
with Google Play.
23Lecture 14: An overview of the Android Programming
![Page 24: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/24.jpg)
Application Model and Components
• Every Android application consists of some loosely
coupled components and the application manifest.
• The manifest defines application’s metadata and the
components bindings.
24Lecture 14: An overview of the Android Programming
![Page 25: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/25.jpg)
Application Components
• Activities & UI design elements: The application’s presentation
layer.
• Services: components that run in the background to perform long-
running operations.
• Intents: a powerful inter-application message passing framework.
• Broadcast Receivers: Intent listeners (not covered in this lecture)
• Content Provider: manages a shared set of application data (not
covered in this lecture)
25Lecture 14: An overview of the Android Programming
![Page 26: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/26.jpg)
Application Manifest
• Every Android project includes a manifest file.
• Defines the structure and metadata of the application, its
components and requirements.
• AndroidManifest.xml
26Lecture 14: An overview of the Android Programming
![Page 27: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/27.jpg)
Manifest Example
27Lecture 14: An overview of the Android Programming
<applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity
android:name=".MainActivity"android:label="@string/app_name" ><intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity></application>
</manifest>
![Page 28: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/28.jpg)
Activities
• Each activity represents a screen that an application can present to its users.
• To create an activity, you must create a subclass of Activity.
• Implement callback methods inherited from Activity class.
• Two important callback methods:– onCreate(): called when creating the activity.– onPause(): indicates that the user might be leaving.
28Lecture 14: An overview of the Android Programming
![Page 29: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/29.jpg)
Activities: Examplepublic class MainActivity extends Activity {
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}}
Lecture 14: An overview of the Android Programming 29
![Page 30: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/30.jpg)
Activity Lifecycle
3030Lecture 14: An overview of the Android Programming
Figure taken from “developer.android.com/training/basics/activity-lifecycle/starting.html”.
![Page 31: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/31.jpg)
User Interface Design
Some UI terminologies in Android:• Views: the base class for all visual interface elements.
• View Groups: extensions of the View class that can contain multiple
child Views.
• Fragments: A Fragment represents a behavior or a portion of user
interface in an Activity. Fragments have their own lifecycle, state, and
back stack.
• Activities: represents the window or screen being displayed. To
display a UI, you assign a View to an Activity.
Lecture 14: An overview of the Android Programming 31
![Page 32: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/32.jpg)
User Interface: Example (1/2)<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="top"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" >
<TextViewandroid:id="@+id/chatTextView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/sendButton"android:layout_alignParentTop="true"android:layout_gravity="top" android:background="@android:color/holo_green_light" />
32Lecture 14: An overview of the Android Programming
![Page 33: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/33.jpg)
User Interface: Example (2/2)<Button
android:id="@+id/sendButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@+id/chatTextInput"android:layout_alignRight="@+id/chatTextView"android:layout_alignTop="@+id/chatTextInput"android:layout_toRightOf="@+id/chatTextInput"android:text="@string/send" />
<EditTextandroid:id="@+id/chatTextInput"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/chatTextView"android:layout_alignParentBottom="true"android:layout_marginBottom="16dp"android:ems="10"android:inputType="textMultiLine" >
<requestFocus /></EditText>
</RelativeLayout>
33Lecture 14: An overview of the Android Programming
![Page 34: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/34.jpg)
Intent
Intents work as a message-passing mechanism both within and between applications.
Using Intents you can:• Explicitly, start a particular Service or Activity using its
class name• Implicitly, start an Activity or Service by requesting an
action on a piece of data• Broadcast the occurrence of an event
34Lecture 14: An overview of the Android Programming
![Page 35: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/35.jpg)
Explicit Start of a New ActivityIntent intent = new Intent(MainActivity.this,
MyContactsActivity.class);
startActivityForResult(intent, PICK_CONTACT);
35Lecture 14: An overview of the Android Programming
![Page 36: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/36.jpg)
Implicit Start of a New ActivityIntent intent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
36Lecture 14: An overview of the Android Programming
![Page 37: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/37.jpg)
Service (1/3)
• A Service is an application component that can perform long-running
operations in the background and does not provide a user interface.
• A service can run in the background to perform work even while the
user is in a different application.
• A component can bind to a service to interact with it and even
perform inter-process communication (IPC).
• A service might handle network transactions, play music, perform
file I/O
37Lecture 14: An overview of the Android Programming
![Page 38: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/38.jpg)
Service (2/3)• To create a service, you must create a subclass of Service.
• You need to override the callback methods to control the behavior of the service:
– onStartCommand(): when another component requests the
service to start.
– onBind(): when another component wants to bind with the service
– onCreate(): when the service is first created.
– onDestroy(): when the service is no longer used and is being
destroyed.
38Lecture 14: An overview of the Android Programming
![Page 39: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/39.jpg)
Service (3/3)
Declare the service in the manifest
<manifest ... >...<application ... >
<service android:name=".ExampleService" />...
</application></manifest>
39Lecture 14: An overview of the Android Programming
![Page 40: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/40.jpg)
Processes
40Lecture 14: An overview of the Android Programming
• By default, all components of the same application run in
the same process.
• You can define in the manifest, that different
components of the same application are to be run in
different processes.
android:process="string"
![Page 41: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/41.jpg)
Threads (1/2)
41Lecture 14: An overview of the Android Programming
• When an application is launched, the system creates a
thread of execution for the application, called "main.“
• The main thread is called UI thread because: it interacts
the Android UI components.
• Performing long operations such as network access or
database queries will block the whole UI.
![Page 42: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/42.jpg)
Threads (2/2)
42Lecture 14: An overview of the Android Programming
• The Andoid UI toolkit is not thread-safe, so do not
manipulate your UI from a worker thread.
• Remember these two rules:
1. Do not block the UI thread
2. Do not access the Android UI toolkit from outside the
UI thread
![Page 43: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/43.jpg)
Threads: Example (1/3)
43Lecture 14: An overview of the Android Programming
An example of wrong implementation:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork("http://example.com/image.png");
mImageView.setImageBitmap(b);
}
}).start();
}
Worker thread is updating ImageView which is not thread-safe.
![Page 44: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/44.jpg)
Threads: AsyncTask (1/3)
44Lecture 14: An overview of the Android Programming
• Correct implementation using AsyncTask
• AsyncTask performs the blocking operations in a worker
thread and then publishes the results on the UI thread.
• you must subclass AsyncTask and implement the
doInBackground() callback method.
• To update the UI, you should implement
onPostExecute()
![Page 45: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/45.jpg)
Threads: AsyncTask (2/3)
45Lecture 14: An overview of the Android Programming
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Integer, Bitmap> {
protected Bitmap doInBackground(String... urls) {return loadImageFromNetwork(urls[0]);
}protected void onProgressUpdate(Integer… progress) {
setProgressPercent(progress[0]);} protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);}
}
![Page 46: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/46.jpg)
Threads: AsyncTask (3/3)
46Lecture 14: An overview of the Android Programming
private class DownloadImageTask extends AsyncTask<String, Integer, Bitmap> {
protected Bitmap doInBackground(String... urls) {return loadImageFromNetwork(urls[0]);
}
protected void onProgressUpdate(Integer… progress) {setProgressPercent(progress[0]);
}
protected void onPostExecute(Bitmap result) {mImageView.setImageBitmap(result);
}}
params
result
progress
![Page 47: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/47.jpg)
Permissions
47Lecture 14: An overview of the Android Programming
• A basic Android application has no permission associated
with it by default, so it cannot access data on the device.
• To make use of protected features of the device, you must
give the related to permissions to your application.
• Permissions must be added to AndroidManifest.xml.
Example:<uses-permission android:name="android.permission.READ_CONTACTS" />
![Page 48: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/48.jpg)
Network and Internet Connectivity (1/4)
48Lecture 14: An overview of the Android Programming
• There are different network technologies with differentspeed, reliability and cost:– Wi-Fi, GPRS, 3G, LTE and so on
• Application can manage these connections to ensure theefficiency and responsiveness
• Networking in Android is handled viaConnectivityManager.
• Changes in network connectivity are broadcasted byAndroid to Intents.
![Page 49: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/49.jpg)
Network and Internet Connectivity (2/4)
49Lecture 14: An overview of the Android Programming
To utilize the network connectivity, following user
permissions are required:
•INTERNET: Allows applications to open network sockets.
•ACCESS_NETWORK_STATE: Allows applications to
access information about networks.
![Page 50: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/50.jpg)
Network and Internet Connectivity (3/4)
50Lecture 14: An overview of the Android Programming
To check if the network is connected:
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// do network operations
} else {
// display error
}
![Page 51: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/51.jpg)
Network and Internet Connectivity (4/4)
51Lecture 14: An overview of the Android Programming
• The NetworkInfo object includes the type of the network connection which is available.
• getType() returns the network connection type:
• TYPE_MOBILE• TYPE_WIFI• TYPE_WIMAX• TYPE_ETHERNET• TYPE_BLUETOOTH
![Page 52: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/52.jpg)
Location (1/4)
52Lecture 14: An overview of the Android Programming
• The central component of the location framework is the
LocationManager system service.
• Using Google Maps Android API, you can add maps to
your app based on Google Maps data.
• The application can acquire the user location utilizing GPS
and Android’s Network Location Provider.
![Page 53: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/53.jpg)
Location (2/4)
53Lecture 14: An overview of the Android Programming
• Network Location Provider:– Determines location through cell tower and Wi-Fi signals– Works indoors and outdoors– Responds faster– Less battery power
• GPS:– Most accurate– Only works outdoor– Consumes battery quickly– Slow
![Page 54: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/54.jpg)
Location (3/4)
54Lecture 14: An overview of the Android Programming
You need to request user permission for either:
•ACCESS_FINE_LOCATION: Allows an app to access precise location from location sources such as GPS, cell towers, and Wi-Fi.
•ACCESS_COARSE_LOCATION: Allows an app to access approximate location derived from network location sources such as cell towers and Wi-Fi.
![Page 55: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/55.jpg)
Location (4/4)
55Lecture 14: An overview of the Android Programming
• Getting user location in Android works by means of callback.
• First, acquire a reference to the system Location Manager
LocationManager locationManager =(LocationManager)this.getSystemService(
Context.LOCATION_SERVICE);
![Page 56: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/56.jpg)
Location: Define a Listener
56Lecture 14: An overview of the Android Programming
• Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status,Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}};
![Page 57: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/57.jpg)
Location : Register the Listener
57Lecture 14: An overview of the Android Programming
• Register the listener with the Location Manager to receive
location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,0, locationListener);
![Page 58: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/58.jpg)
Location: Last Known Location
58Lecture 14: An overview of the Android Programming
• If you need to Get the last known location for the quick
location information:
String locationProvider =
LocationManager.NETWORK_PROVIDER;
// Or use LocationManager.GPS_PROVIDER
Location lastKnownLocation =
locationManager.getLastKnownLocation(locationProvider
);
![Page 59: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/59.jpg)
User Experience
59Lecture 14: An overview of the Android Programming
• A high quality app is more probable to have higher user
ratings, better rankings, more downloads.
• Improve stability and eliminate bugs
• Improve UI responsiveness, a slow and unresponsive UI
will disappoint the users.
• Improve the ease of use
![Page 60: An Overview of the Android Programming · Android Operating System (1/2) • Google’s Linux based open-source OS that includes: – Linux kernel optimized for mobile and embedded](https://reader033.vdocuments.site/reader033/viewer/2022060707/6072c3be98a6f501057b9334/html5/thumbnails/60.jpg)
User Experience
60Lecture 14: An overview of the Android Programming
• High quality User Interface
• Having the right set of features
• You can find many good suggestions and best practices to
improve your application following the link:http://developer.android.com/training/index.html