Weitere ähnliche Inhalte
Ähnlich wie Application Development Part 1 (20)
Application Development Part 1
- 2. Java
• Χξεηάδεηαη ε θαηαλόεζε ηνπιάρηζησλ ησλ
βαζηθώλ ελλνηώλ Ο/Κ πξνγξακκαηηζκνύ
– Exceptions
– Inner Class, Interface
• Δπηπιένλ:
– Java IO
– Java Thread
– Java Socket
- 4. Εηζαγφγή ζηο Android
• Αλνηθηή πιαηθόξκα ινγηζκηθνύ γηα θηλεηέο
ζπζθεπέο
• Πιήξεο stack – OS, Middleware, Applications
• Αξρηθά project ηνπ Open Handset Alliance
(OHA)
• Βαζηζκέλν ζην Linux
• Γξήγνξε αλάπηπμε εθαξκνγώλ ζε Java
• Open source under the Apache 2 license
- 6. Linux Kernel
• Έρεη ην ξόιν ηνπ HAL
• Device drivers
• Memory management
• Process management
• Networking
- 7. Βηβιηοζήθες
• Γξακέλεο ζε C/C++
• Γηεπαθή κέζσ Java
• Surface manager – Handling UI Windows
• 2D and 3D graphics
• Media codecs, SQLite, Browser engine
- 8. Android Runtime
• Dalvik VM
– Αξρεία Dex (dalvik executable format)
– Πην ζπκπαγή θαη απνδνηηθά από ηα
παξαδνζηαθά class files
– Λόγσ πεξηνξηζκέλεο κπαηαξίαο
– Αληηθαζίζηαηαη από ην 4.4 κε ηελ ART
• Core Libraries
– Java 5 Std edition
– Collections, I/O etc…
- 11. Εθαρκογές ζε Java
package com.google.android.helloactivity;
import android.app.Activity;
import android.os.Bundle;
public class HelloActivity extends Activity {
public HelloActivity() {
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.hello_activity);
}
}
- 13. Dalvik runtime – εηδηθό γηα
θηλεηές εθαρκογές
Ταπηόρξνλε θαη απνδνηηθή εθηέιεζε
πνιιαπιώλ VM
Κάζε εθαξκνγή έρεη δηθή ηεο VM
Διάρηζην memory footprint
- 15. Activities
• Σαλ γεληθόο θαλόλαο, αληηζηνηρνύλ ζε έλα
UI screen
• Όκσο κπνξνύλ:
– Να κελ έρνπλ UI
– Να είλαη ζε floating window
– Να επηζηξέθνπλ ηηκέο
- 16. IntentReceivers
• Αληαπνθξίλνληαη ζε εθπεκπόκελα
(broadcast) Intents’
• Δπηηξέπνπλ ηελ αληαπόθξηζε ζε
εμσηεξηθή εηδνπνίεζε ή alarms
• Κάζε εθαξκνγή κπνξεί λα νξίζεη θαη λα
εθπέκςεη ηα δηθά ηεο Intent
- 17. Intents
• Σθεθηείηε ην ζαλ δεύγνο από ξήκα –
νπζηαζηηθό: Μηα πεξηγξαθή ηνπ ηη ζα ζέιαηε
λα ζπκβεί
– Π.ρ. VIEW, CALL, PLAY θηι..
• Τν ζύζηεκα ηαηξηάδεη ην intent κε ην activity
ηεο ίδηαο ή άλλης εφαρμογής, πνπ κπνξεί λα
πξνζθέξεη ηελ επηζπκεηή ππεξεζία
• Τα Activities θαη ηα IntentReceivers
πεξηγξάθνπλ ηη είδνο intent κπνξνύλ λα
ρεηξηζηνύλ.
- 20. ContentProviders
• Δπηηξέπεη ηελ πξόζβαζε ζηα δεδνκέλα
ηεο εθαξκνγήο, ζε άιιεο εθαξκνγέο
– Π.ρ. address book, photo gallery
• Πξνζθέξεη νκνηόηππα APIs γηα:
– επεξσηήζεηο
– δηαγξαθή, ελεκέξσζε θαη εηζαγσγή
• Τν πεξηερόκελν εθπξνζσπείηαη από
θάπνην URI θαη MIME type
- 23. Hello World
• Μηα θαιή αξρή:
http://developer.android.com/training/basic
s/firstapp/index.html
• Γεκηνπξγία UIs
– Χξήζε νξηζκέλσλ Views
• Π.ρ. TextView, EditText, Button
– Τνπνζεηεκέλα ζε Layouts
• Π.ρ. LinearLayout, TableLayout, AbsoluteLayout
- 24. Κύθιος δφής εθαρκογής
• Οη εθαξκνγέο ηξέρνπλ ζε δηθέο ηνπο
δηεξγαζίεο (VM, PID)
• Οη δηεξγαζίεο εθθηλνύλ θαη ζηακαηνύλ
όπνηε ρξεηάδεηαη, ώζηε λα ηξέμνπλ ηα
ζπζηαηηθά κηαο εθαξκνγήο
• Οη δηεξγαζίεο κπνξνύλ λα ηεξκαηηζηνύλ
γηα λα απειεπζεξσζνύλ πόξνη.
- 25. • Σπλήζσο δε ρξεηάδεηαη λα θιεζεί ε onDestroy
– ην ζύζηεκα αλαιακβάλεη ηνλ απηόκαην
ηεξκαηηζκό θαη ηελ απειεπζέξσζε κλήκεο.
- 26. Σύλουε
Τν Android ζρεδηάζηεθε λα επηηξέπεη ηε
ρξήζε ζηνηρείσλ άιισλ εθαξκνγώλ από
θάζε εθαξκνγή
Κάζε εθαξκνγή κπνξεί λα «δηαθεκίζεη» ζηηο
άιιεο ηηο ππεξεζίεο πνπ κπνξεί λα
πξνζθέξεη.
- 27. Οη εθαρκογές έτοσλ θοηλή
δοκή
Views όπσο lists,
grids, text boxes,
buttons
Content
Providers γηα ηελ
θνηλή ρξήζε
δεδνκέλσλ από
άιιεο εθαξκνγέο
ή ηεο δηθήο καο
εθαξκνγήο
Resource Manager, πνπ
πξνζθέξεη πξόζβαζε ζε
πόξνπο όπσο localized
strings, graphics θαη
layout files
Notification Manager πνπ
επηηξέπεη ηελ πξνβνιή
κελπκάησλ ζην notification
bar
Activity Manager πνπ
δηαρεηξίδεηαη ηνλ θύθιν
δσήο
- 31. Notification Manager
• Ο κόλνο ηξόπνο δηεπαθήο ελόο
background app κε ηνπο ρξήζηεο
• Κνηλή κέζνδνο – εκπεηξία ρξήζηε γηα όιεο
ηηο εθαξκνγέο
- 32. Άιια θοηλά ζηοητεία
Broadcast
receivers γηα
ηελ εθθίλεζε
άιισλ
εθαξκνγώλ
Data storage
κέζσ βάζεσλ
δεδνκέλσλ,
αξρείσλ ή
application
preferences Services γηα ηελ
εθηέιεζε δηαδηθαζηώλ
ζην παξαζθήλην
Intents πνπ αηηνύληαη
ππεξεζίεο από άιιεο
εθαξκνγέο ή πξνζθέξνπλ
ππεξεζίεο
Activity πνπ πινπνηεί ηηο
δηεπαθέο κε ην ρξήζηε
(γξαθηθά ζηνηρεία
εθαξκνγήο)
- 33. Οη εθαρκογές έτοσλ κηα θοηλή
δοκή
code
images
files
UI layouts
constants
Auto
generated
resource list
- 34. Σεκείο Μεδέλ: Android Manifest
Όιεο νη βαζηθέο πιεξνθνξίεο γηα ηελ εθαξκνγή (ΧΜL)
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.my_domain.app.helloactivity">
<application android:label="@string/app_name">
<activity android:name=".HelloActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
- 36. UI layouts are in Java and XML
setContentView(R.layout.main); //will load the XML UI file
- 38. Η αζθάιεηα ζηο Android
αθοιοσζεί ηης πραθηηθές ηοσ Linux
Κάζε εθαξκνγή δηθή ηεο δηεξγαζία
Γηθαηώκαηα πξόζβαζεο γηα θάζε
δηεξγαζία κε user & group permissions
Πνιιαπιά επίπεδα δηθαησκάησλ αλά
ιεηηνπξγία
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.app.myapp" >
<uses-permission id="android.permission.RECEIVE_SMS" />
</manifest>