1. Android Development
...and the daily challenges
Dominik Helleberg
inovex GmbH
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
8. Dispatch it: Asynchrone Aufgaben
@Override
protected void onStart() {
super.onStart();
fetchSpiegelHeadline();
}
Was passiert dann?
a) Die Activity wird angezeigt, nach ca. 15 Sekunden wird die Headline
dargestellt
b) Die Activity wird angzeigt, es folgt ein ANR
c) Abhängig vom API Level des Zielgeräts fliegt eine Exception oder es
folgt ein ANR
d) Die Activity wird nicht vollständig angezeigt, es folgt ein ANR
10.02.2012 8
9. Dispatch it: Asynchrone Aufgaben
@Override
protected void onStart() {
super.onStart();
fetchSpiegelHeadline();
}
Was passiert dann?
a) Die Activity wird angezeigt, nach ca. 15 Sekunden wird die Headline
dargestellt
b) Die Activity wird angzeigt, es folgt ein ANR
c) Abhängig vom API Level des Zielgeräts fliegt eine Exception oder
es folgt ein ANR
d) Die Activity wird nicht vollständig angezeigt, es folgt ein ANR
10.02.2012 9
10. Dispatch it: Asynchrone Aufgaben
Problem:
Lang andauernde Operationen:
Netzwerk
File I/O
Preferences
Datenbankzugriffe
Android definiert 2 Regeln:
Do not block the UI thread
Do not access the Android UI toolkit from outside the UI thread
http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
10.02.2012 10
13. Dispatch it: Asynchrone Aufgaben
Variante 1: Threads
Was passiert dann?
a) Die Activity wird angezeigt, nach ca. 15 Sekunden wird die
Headline dargestellt
b) Die Activity wird nicht angezeigt, es folgt ein ANR
c) Die Activity wird angzeigt, es folgt ein ANR
d) Die Activity wird angezeigt, nach ca. 15 Sekunden fliegt eine
Exception
10.02.2012 13
14. Dispatch it: Asynchrone Aufgaben
Variante 1: Threads
Was passiert dann?
a) Die Activity wird angezeigt, nach ca. 15 Sekunden wird die
Headline dargestellt
b) Die Activity wird nicht angezeigt, es folgt ein ANR
c) Die Activity wird angzeigt, es folgt ein ANR
d) Die Activity wird angezeigt, nach ca. 15 Sekunden fliegt
eine Exception
10.02.2012 14
23. ListViews
Universell einsetzbar
Lösen viele „klassische“ UI-
Elemente ab (Menus, Tree Views)
Einfach zu bedienen
Einfach zu implementieren?
10.02.2012 23
24. ListViews – The Framework
View Recycling
Android recycelt Views
Daten müssen von Views getrennt werden
Performance
Views so „günstig“ wie möglich erzeugen / füllen
ViewHolder Pattern
10.02.2012 24
26. ListViews – View Holder
View Holder – Klasse um recycelte Views schnell füllen zu können
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null)
{
v = mLayoutInflater.inflate(R.layout.sequence_list_item, null);
ViewHolder vh = new ViewHolder();
vh.pb = (SeekBar) v.findViewById(R.id.SequenceSeekBar01);
vh.tb = (ToggleButton)
v.findViewById(R.id.SequenceToggleButton01);
v.setTag(vh);
}
ViewHolder vh = (ViewHolder) v.getTag();
vh.tb.setChecked( // set Data
vh.pb.setProgress(//set Data
return v;
}
class ViewHolder { SeekBar pb; ToggleButton tb; }
10.02.2012 26
27. Build it up-to-date
Fragments
ActionBar
User Interface / Interaction Design
10.02.2012 27
28. Build it up-to-date – Fragments
Komponenten mit eigenem Lifecycle
Benötigen eine Activity
Eine Activity kann 1 – x Fragments enthalten
10.02.2012 28
29. Build it up-to-date – Fragments
Kommunikation mit der Activity und anderen Fragments über
Interfaces
Activity implementiert MySpecialInterface
Referenzen
Fragments halten Referenzen auf andere Fragmente
Intents
Activity überschreibt public void startActivity(Intent i) und delegiert die
Intents ggf. weiteriund tent)
10.02.2012 29
30. Build it up-to-date – ActionBar
Ersetzt den „TitleBar“
Ersetzt das klassische „Options Menu“
Versucht das „Aus den Augen aus dem Sinn“ Problem zu lösen
Priorisiert die möglichen / sinnvollen Aktionen
Ergänzt die klassische „Back“ – Navigation
Wird auch auf Android 2.x schon von vielen populären Apps
eingesetzt
10.02.2012 30
31. Build it up-to-date – ActionBar
• App Icon oder Logo
• „In-App“ Navigation (optional)
10.02.2012 31
32. Build it up-to-date – ActionBar
• „View Details“
– Titel
– In-View Navigation
– Filter / Drop Downs
10.02.2012 32
33. Build it up-to-date – ActionBar
Actions
– Häufigste Aktionen als Icon
– Unwichtige Aktionen im Overflow Menu
– Texteingabe
– Statusanzeige
10.02.2012 33
35. Build it up-to-date – ActionBar
ActionBarSherlock
• Erweiterung der Google compatibility library
• Ermöglicht die Darstellung von ActionBars
ab Android 1.6
• Nicht voll 3.x / 4.x API kompatibel
• http://actionbarsherlock.com
10.02.2012 35
37. User Interface / Interaction Design
Die wichtigsten News:
Menu Key ist deprecated
Kontextmenu ist deprecated
Long Press ist jetzt „selektieren“
Neue Gesten (horizontal swipe)
10.02.2012 37