1.Komponen Aplikasi Android
Komponen aplikasi adalah bagian penting dari sebuah aplikasi Android. Komponen ini harus terhubung dengan AndroidManifest.xml file yang menggambarkan setiap komponen dari aplikasi dan bagaimana mereka berinteraksi.
Ada empat komponen utama yang dapat digunakan dalam aplikasi Android:
Activity : Untuk menampilkan antarmuka aplikasi.
Service : Untuk menjalankan proses aplikasi di belakang layar.
Broadcast Receiver : Untuk komunikasi antar activity, aplikasi dan antar device.
Content Provider : Untuk manajemen data dan database.
Sumber : http://android-beginner-lessons.blogspot.co.id/2015/10/android-mengenal-komponen-aplikasi.html?m=1
2. Hyrarky of Screen elements
Hirarki Elemen Layar

Unit dasar dari aplikasi android adalah activity, yaitu sebuah objek dari kelas android.app.Activity. Activity bisa melakukan banyak hal, tetapi dia sendiri tidak akan terlihat secara langsung dilayar. Untuk membuat activity terlihat di layar adalah dengan membuatkannya User Interface, dimana disini kita akan menggunakan viewgroups Unit dasar User Interface dalam platform Andorid.
3. Proses Thread
- Konsep dasar thread
Thread disebut juga sebagai proses ringan (lightweight) yang merupakan unit dasar dari utilitas CPU, yang mana didalamnya terdapat id trhead, program counter, register, dan stuck. Dengan banyak control thread proses dapat melakukan lebih dari satu pekerjaan dalam waktu yang sama.
- Multithreading
Thread saling berbagi bagian program, bagian data, dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama disebut dengan multithreading.
a. Responsive
Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.
b. Berbagi sumber daya
Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
c. Ekonomis
Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan contextswitching thread.
d. Utilisasi arsitektur multiprosesor
Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.
- User Threads
Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.
- Kernel Threads
Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.
- Model Multithreading
a. Model Many to One
Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.
b. Model Many to Many
Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.
c. Model One to One
Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
- Pustaka Thread
Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library bertugas untuk menyediakan API untuk programmer dalam menciptakan dan memanage thread. Ada dua cara dalam mengimplementasikan pustaka thread:
- Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system call. Jadi, jika kita memanggil fungsi yang sudah ada di pustaka, maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan sistem call.
- Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan melibatkan sistem call ke kernel.
Ada tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX Pthreads, Java, dan Win32. Implementasi POSIX standard dapat dengan cara user level dan kernel level, sedangkan Win32 adalah kernel level. Java API thread dapat diimplementasikan oleh Pthreads atau Win32.
Sumber : http://irfantek.blogspot.co.id/2015/12/makalah-proses-dan-thread.html
4. Siklus hidup activity

Activity adalah suatu kelas yang disediakan oleh Android guna mengimplementasikan siklus hidup suatu kelas-kelas pada suatu aplikasi. Oleh karena itu, kelas Activity wajib diturunkan ke kelas-kelas lain pada aplikasi. Jika kalian masih bingung dengan konsep kelas dan keturunan (inherintance), sebaiknya kalian belajar mengenai bahasa pemograman Java terlebih dahulu karena sesungguhnya pemograman Android berangkat dari bahasa pemograman Java. Berikut ilustrasi di dalam kode pemograman.
Nama kelas yang kita inisiasi adalah StartingPoint yang berada dalam package bernama com.thenewboston.travis. Package adalah suatu pembungkus atau suatu kemasan yang berisi banyak kelas-kelas. Setelah Activity menurunkan sifat-sifatnya atau dengan kata lain setelah StartingPoint melakukan extends kepada kelas Activity, maka siklus di atas berlaku pula pada kelas StartingPoint. Siklus sesungguhnya berisi dengan masing-masing state yang sebenarnya adalah suatu method yang dimiliki kelas activity. Berikut penjelasan pada masing-masing state :
- onCreate()
Method ini dipanggil ketika activity pertama kali dibuat
- onStart()
Method ini dipanggil ketika sebuah activity tampil ke pengguna
- onResume()
Method ini dipanggil ketika activity yang berjalan pada saat itu dihentikan sementara (paused) dan activity sebelumnya dijalankan kembali(resumed). (Hasil dari method OnRestart())
- onFreeze()
Method ini dipanggil ketika activity berada dalam keadaan freeze atau tidak merespon akibat sedang sibuk mengerjakan task tertentu pada sistem
- onPause()
Method ini dipanggil ketika activity di hentikan sementara (pause) dan berikutnya ketika dijalankan kembali akan berada dalam posisi resume dan memanggil method OnResume()
- onStop()
Method ini dipanggil ketika activity tidak lagi tampak kepada pengguna
- onDestroy()
Method ini dipanggil sebelum activity dihancurkan (destroy) oleh sistem (baik secara manual maupun untuk kepentingan pelonggaran memori
- onRestart()
Method ini dipanggil ketika acitivity dijalankan kembali setelah state Stop
Pada state di atas, kita bebas mendefenisikan method-method terkait seperti contoh pada state start, kita dapat mendefenisikan suatu Splash screen sehingga saat aplikasi baru dimulai, akan menampilkan suatu gambar terlebih dahulu disertai dengan musik lalu masuk ke aplikasi utama. Siklus di atas pun berlangsung terus menerus hingga aplikasi atau activity akhirnya di terminasi.
Konsep siklus ini penting agar developer tidak mengimplementasikan banyak kelas di waktu yang bersamaan yang pastinya memakan banyak sekali memori. Ketika kelas lain aktif, kelas yang tidak berjalan perlu dihentkan sementara agar menghemat penggunaan memori. Mungkin itu tadi sekilas ilmu bermanfaat mengenai pemogramanAndroid.
Sumber: https://awesomedit.wordpress.com/2013/04/22/siklus-hidup-activity-android/
5. Project Strukture
Sebuah Android Project terbagi menjadi beberapa peran, yaitu :
a. Java
Semua code java dapat ditemukan di src/main/java directory. Semua file java dapat ditemukan di directory ini, dan Java juga yang menentukan fungsi dari aplikasi mobile anda.
b. Resources
Kita tidak hanya ingin membuat aplikasi yang berfungsi dengan baik dan benar, tetapi juga ingin membuat aplikasi yang indah dan keren untuk dipakai. Nah disinilah faktor desain berperan. Folder resources dapat ditemukan di app / res directory, yang berisikan :
- drawable folder sebagai tempat meletakan gambar-gambar yang kita pakai.
- layout folder sebagai tempat xml untuk desain yang dipakai.
- menu folder sebagai tempat xml untuk desain actionbar.
- values folder sebagai tempat untuk meletakan konfigurasi statis, seperti strings, colors, dimensions dan styles.
c. AndroidManifest.xml
Android Manifest adalah xml yang mengatur semua yang terjadi pada app anda. Semua activity harus dilaporkan kepada The Big Boss, yaitu androidmanifest.xml. Title, icon, dan version juga dilaporkan disini.

- android:icon Lokasi dari icon, @mipmap/ic_launcher berarti lokasi di folder res/mipmap/ dengan file ic_launcher.
- android:theme Lokasi dari theme yang dipilih, lokasi style terletak di folder res/values/styles.xml dengan pilihan name yaitu AppTheme.
- <activity> Element di sini menggambarkan semua activity yang terdaftar di dalam project ini.
d. Intent
Intent dapat berkomunikasi internal di dalam satu app atau external antar app. Contohnya, pada androidmanifest.xml app “Hello World” anda, akan anda temukan bahwa MainActivity mempunyai android.intent.category.LAUNCHER yang akan menjadikan MainActivity sebagai Intent pertama sewaktu app kita diluncurkan / dijalankan (launch).
Sumber : http://aplikasi-mobile.com/id/Blog/id/9/Struktur_dari_Android_Project
6. Structure XML
Struktur dasar XML terdiri dari beberapa elemen seperti root child dan subchild. Namun XML juga mempunyai bentuk atau struktur yang menyerupai bentuk sebuah pohon sehingga disebut struktur pohon atau Tree Struckture. Dan berikut ini adalah dalam bentuk struktur pohonnya :

Kemudian berikut ini adalah struktur penulisan XML :
<root>
<child>
<subchild>…..</subchild>
</child>
</root>
Dan berikut ini contoh kedua struktur di atas jika diimplementasikan kedalam bentuk XML :
Pada baris pertama mendefinisikan versi XML yaitu (1,0) dan pengkodean yang digunakan (ISO-8859-1 = set karakter Latin-1/West Eropa). Kemudian pada baris selanjutnya adalah elemen root yang bernama < tokobuku > yang memiliki elemen < buku > yang mempunyai 4 child yaitu < judul >, < pengarang >, < tahun > dan < harga >.
Sumber : http://medyarizkadani.blogspot.co.id/2012/06/tutorial-xml-2-struktur-xml.html
7. Jenis-jenis Layout
Berikut jenis-jenis layout yang terdapat di Android :
- LinearLayout
LinearLayout adalah layout yang menampilkan elemen-elemen view dengan arah linear, vertikal ataupun horizontal. Ini adalah layout paling sederhana di Android.
- RelativeLayout
RelativeLayout adalah layout yang menampilkan elemen-elemen view dalam posisi yang relatif. Posisi dari sebuah view yang dapat diletakkan relatif terhadap posisi elemen view di sekitarnya atau relatif terhadap area layout utama. Sebuah desain tampilan aplikasi bisa dibuat lebih mudah dan sederhana menggunakan RelativeLayout dibandingkan dengan LinearLayout.
- TableLayout
TableLayout adalah layout yang menampilkan elemen view berdasarkan baris dan kolom. Bagi Anda yang telah mempelajari HTML, penggunaan TableLayout disini seperti penggunaan table di HTML yaitu dengan tag <table> dan <tr> serta <td>.
- GridView
GridView adalah layout grid yang biasa digunakan untuk membuat galeri foto.
- TabLayout
TabLayout adalah layout pada android dengan desain seperti tab.
- ListView
ListView adalah jenis layout dengan tampilan list.
Sumber : ( https://www.dumetschool.com/blog/Layout-di-Android )
8. Mendesain UI/layout
Untuk mendesain sebuah aplikasi perlu memerhatikan warna dasar pada aplikasi dan letak button, text view dll. Alasan perlu memerhatikan warna, agar para pengguna atau user dapat menggunakan aplikasi dalam waktu yang lama dan warna tersebut tidak membuat mata lelah, contohnya aplikasi Whatsapp menggunakan warna hijau, secara psikologis warna hijau dapat memperbaiki mood kita dan dapat menyegarkan mata. Untuk mengelola tata letak button, label, textview dll perlu diperhatikan, agar user mudah untuk menemukan button, contohnya: tombol save biasanya berada dipojok kanan, button close dipojok kanan.
9. Android UI Control (Toolbox, Variabel XML dideklarasikan ke Variabel Java)
| Tipe Kontrol | Keterangan | Kelas Terkait |
|---|---|---|
| Tombol | Tombol tekan yang bisa ditekan, atau diklik, oleh pengguna untuk melakukan suatu aksi. | Button |
| Bidang teks | Bidang teks yang bisa diedit. Anda bisa menggunakan widget AutoCompleteTextView untuk membuat widget entri teks yang menyediakan saran pelengkapan otomatis |
EditText, AutoCompleteTextView |
| Kotak centang | Tombol aktif/nonaktif yang bisa dialihkan oleh pengguna. Anda harus menggunakan kotak centang saat menampilkan sekumpulan opsi yang bisa dipilih pengguna dan bila keduanya mungkin terjadi bersamaan. | CheckBox |
| Tombol radio | Mirip dengan kotak centang, hanya saja cuma satu opsi yang bisa dipilih dalam kumpulan tersebut. | RadioGroupRadioButton |
| Tombol toggle | Tombol aktif/nonaktif dengan indikator lampu. | ToggleButton |
| Spinner | Daftar tarik-turun yang memungkinkan pengguna memilih salah satu dari serangkaian nilai. | Spinner |
| Picker | Dialog bagi pengguna untuk memilih satu nilai dari satu kumpulan dengan menggunakan tombol naik/turun atau dengan isyarat menggesek. Gunakan widget DatePickercode> untuk memasukkan nilai tanggal (bulan, hari, tahun) atau widget TimePicker untuk memasukkan nilai waktu (jam, menit, AM/PM), yang akan diformat secara otomatis untuk lokasi pengguna tersebut. |
DatePicker, TimePicker |
Sumber: https://developer.android.com/guide/topics/ui/controls.html?hl=id
10. Contoh program menggunakan UI Control dalam aplikasi Android

Sumber : http://salatigadev.com/membuat-user-interface-dasar-pada-aplikasi-android/
Silahkan download file presentasi Disini
Ade Irma Suryani 15.11.0261
Danang Cahyo Adhi 15.11.0260
Ganang Ibnujati 15.11.0263
Gesha Agus S. 15.11.0266
Naufal Dzaky W. 15.11.0267
Rokhanah Puji L 15.11.0256
Septia Dwi Kurniawan 15.11.0257