PMO2 TI2015A – Tegar Juniar W – Pertemuan 3. Pengembangan Perangkat Lunak Mobile

Download

PMO2 TI2015A Tegar Juni BAB 3. Pengembangan Perangkat Lunak Mobile

PMO2 TI2015A Tegar Juni BAB 3. Pengembangan Perangkat Lunak Mobile (Makalah)

Nama Anggota Kelompok :

  • Dina Murniati Putri (NIM.15.11.0292)
  • Erlangga Putra Buana (NIM.15.11.0294)
  • Irvinda Yudha Febrian (NIM.15.11.0295)
  • Nugraga Dani Aji (NIM.15.11.0290)
  • Rahman Al Firous (NIM.15.11.0285)
  • Tegar Juniar Wibowo (NIM.15.11.0291)

Komponen Aplikasi Android

  1. Activities                 : Suatu komponen yang mengendalikan User Interface dan menangani interaksi pengguna ke layar smart phone.
  2. Services                 : Suatu komponen yang menangani proses di background yang terhubung dengan aplikasi.
  3. Broadcast Receivers : Suatu komponen yang menangani komunikasi antara Sistem Operasi Android dengan aplikasi.
  4. Content Providers : Suatu komponen yang menangani data dan masalah manajemen basis data.

Sumber: http://www.insinyoer.com/komponen-aplikasi-android/

 

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.

Sumber:

https://text-id.123dok.com/document/oy81m7p0z-framework-aplikasi-hirarki-elemen-layar-resources-rjava.html

 

Proses Thread

  1. 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. Thread saling berbagi bagian program, bagian data, dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama disebut dengan multithreading. Dengan banyak control thread proses dapat melakukan lebih dari satu pekerjaan dalam waktu yang sama.

 

 

  1. Keuntungan Multithreading
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. 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.
  2. 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.
  3. 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.

http://irfantek.blogspot.co.id/2015/12/makalah-proses-dan-thread.html

 

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/

 

Project structure

tampilan hierarki proyek android yang biasanya kita gunakan untuk koding, tampilan tersebut hanya untuk memudahkan dalam navigasi ke beberapa modul yang kebanyakan dibutuhkan dalam proses development. Pada dasarnya meringkas kesuluruhan file yang nantinya sering di lakukan perubahan dalam development, seperti halnya menampilkan gradle script teratas dengan pemisahan dalam tampilan, modules app agar memudahkan pengeditan modul depensi dan library tambahan dari aplikasi yang dibuat, atau module gradle project dari skala kode sumber proyek di mana depensi di dapatkan/berasal. Disisi lain juga beberapa resource gambar,icon, dll terlihat dalam satu file saja walaupun sebenarnya terdapat banyak file dalam ukuran berbeda untuk menentukan ukuran yang sesuai pada standart platform.

 

Secara garis besar, tampilan dalam mode android tersebut dipisahkan menjadi manifest berisi konfigurasi global dari aplikasi android, java berisi file kontroler, java yang dipisahkan berdasarkan nama paket dan terakhir res dimana sebagai resources, view, sumber daya dari semua komponen layout berasal, untuk lebih detail mengenai pembahasan ini bisa ke topik berikut https://developer.android.com/guide/topics/resources/providing-resources.html

nama-module/ build/ Berisi file output/result/keluaran dari beberapa kompilasi project yang dilakukan saat development.

libs/ berisi library proyek

src/ Berisi semua file sumber daya dan kode untuk modul, termasuk kode java dan semua file resources.

androidTest/ Berisi kode untuk pengujian instrumentasi yang dijalankan pada perangkat Android. Untuk informasi selengkapnya, anda bisa merujuk di link berikut https://developer.android.com/studio/test/index.html.

main/ Berisi file sourceset “main”: sumber daya dan kode Android yang digunakan bersama oleh semua varian pembangunan baik dalam release atau versi debug (file untuk varian pembangunan lainnya berada dalam direktori sama, semisal src/debug/ untuk tipe pembangunan versi debug).

AndroidManifest.xml Konfigurasi global, menjelaskan sifat,tipe aplikasi dan masing-masing komponennya,activity,resources,nama aplikasi dll.

java/ Berisi kode Java yang notabene sebagai kontroler dalam struktur project.

jni/ Berisi kode asli yang menggunakan Java Native Interface (JNI).

gen/ generated file, Berisi file Java yang dihasilkan oleh Android Studio, misalnya file R.java Anda dan antarmuka yang dibuat dari file AIDL, biasanya terdiri dari susunan resource id yang sudah terkompilasi secara otomatis.

res/ Berisi sumber daya aplikasi tempat dimana mengatur tampilan dan layouting, dan folder lainnya berisi file resource pendukung gambar, file layout, dan string UI, dll.

assets/ Berisi file yang harus dikompilasi menjadi file .apk apa adanya tanpa kompilasi seperti modul modul sebelumnya. Anda bisa menyusuri direktori ini dengan cara yang sama seperti pada sistem file umumnya dengan menggunakan URI dan membaca file sebagai aliran byte dengan menggunakan AssetManager. Lokasi yang bagus untuk data game dan tekstur.

test/ Berisi kode untuk pengujian lokal yang dijalankan pada JVM host Anda.

build.gradle (modul) build.gradle (proyek) terkait 2 build gradle tersebut sudah saya jelaskan di tampilan default android diatas dimana pada dasarnya terdapat satu file hanya saja di tampilkan lebih untuk memudahkan navigasi antara pemasangan depensi atau pemasangan kode proyek sumber depensi.

Secara garis besar modul dan lingkup ruang kerja yang akan di gunakan dalam proses pengembangan proyek tidak lebih dari yang saya paparkan diatas, semoga penjelasan yang saya paparkan bisa lebih di pahami dan dimengerti mengenai fungsionalitas masing masing modul dalam proyek android itu sendiri, sehingga tidak perlu melakukan kesalahan edit file atau bingung hendak mengedit file yang mana. manifest tempat dimana kita mendeklarasikan semua aktivitas yang akan kita jalankan pada aplikasi android nantinya, disana juga terdapat beberapa opsi item, string and value untuk menentukan / mengkonfigurasi pengaturan global dalam aplikasi android. Untuk file kontroler lebih pada file yang berektensi .java yang terdapat pada folder sub java/ di direktori src/ sedangkan untuk tampilan penyokong UI sendiri berdiri pada extensi .xml yang terdapat pada folder res/layout dimana semua file/komponen pendukung lainnya juga bisa dimanfaatkan untuk memenuhi sumber daya semisal icon di folder mipmap/ gambar di folder drawable/ dan source string,integer,dll bisa di dapatkan dan diletakkan pada folder values/../creatorb.

Sumber: https://creatorbe.github.io/programming/android/2017/03/30/memahami-struktur-project-di-android-studio-creatorbe.html

 

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.

Sumber: http://medyarizkadani.blogspot.co.id/2012/06/tutorial-xml-2-struktur-xml.html

 

Jenis-jenis Layout

Layout adalah suatu tampilan tata letak di android studio untuk mengatur penempatan text/gambar yang sudah terkonsep.jadi layout di sini adalah bagian terpenting untuk memperindah tampilan pada aplikasi yang kita buat nyaman di lihat bagi pengguna. Layout di bagi menjadi 2 yaitu:

  • Linear Layout
  • Relative Layout

Liniear Layout adalah design tampilan pada aplikasi kita dengan tata letak secara vertical dan horizontal dimana tata letak aplikasi kita hanya bisa memasukan media secara mendatar dan menurun.

 

Mendesain User Interface/Layout

cara membuat Linear layout Vertical dan Horizontal pada android studio:

kita buat project baru pada android studio dan beri nama project sesuai keinginan kita contoh nama project:”Belajar Linear Layout”, jika belum tau membuat project di android studio bisa klik di sini.

Sebagai contoh masukan script berikut pada activity_main.xml.

Berikut hasil Relative Layout yang kita buat:

Sekarang kita sudah selesai belajar layouting,mudah bukan?? karna layout ini bagian paling penting tanpa layout tampilan kita bakal acak acakan dan tidak teratur.

Sumber: https://medium.com/@kalifardy56/mengenal-jenis-layout-android-studio-335a63666ff7

 

Android UI Control (Toolbox, Variabel XML dideklarasikan ke Variabel Java)

Android UI Controls

There are number of UI controls provided by Android that allow you to build the graphical user interface for your app.

 

Sr.No.   UI Control & Description

1   TextView

This control is used to display text to the user.

2    EditText

EditText is a predefined subclass of TextView that includes rich editing capabilities.

 

3     AutoCompleteTextView

The AutoCompleteTextView is a view that is similar to EditText, except that it shows a list of completion suggestions automatically while the user is typing.

 

4     Button

A push-button that can be pressed, or clicked, by the user to perform an action.

 

5              ImageButton

An ImageButton is an AbsoluteLayout which enables you to specify the exact location of its children. This shows a button with an image (instead of text) that can be pressed or clicked by the user.

 

6    CheckBox

An on/off switch that can be toggled by the user. You should use check box when presenting users with a group of selectable options that are not mutually exclusive.

 

7    ToggleButton

An on/off button with a light indicator.

 

8     RadioButton

The RadioButton has two states: either checked or unchecked.

 

9     RadioGroup

A RadioGroup is used to group together one or more RadioButtons.

 

10    ProgressBar

The ProgressBar view provides visual feedback about some ongoing tasks, such as when you are performing a task in the background.

11   Spinner

A drop-down list that allows users to select one value from a set.

12    TimePicker

The TimePicker view enables users to select a time of the day, in either 24-hour mode or AM/PM mode.

13    DatePicker

The DatePicker view enables users to select a date of the day.

Create UI Controls

Input controls are the interactive components in your app’s user interface. Android provides a wide variety of controls you can use in your UI, such as buttons, text fields, seek bars, check box, zoom buttons, toggle buttons, and many more.

As explained in previous chapter, a view object may have a unique ID assigned to it which will identify the View uniquely within the tree. The syntax for an ID, inside an XML tag is −

android:id=”@+id/text_id”

To create a UI Control/View/Widget you will have to define a view/widget in the layout file and assign it a unique ID as follows −

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”

android:orientation=”vertical” >

 

<TextView android:id=”@+id/text_id”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”I am a TextView” />

</LinearLayout>

Then finally create an instance of the Control object and capture it from the layout, use the following −

TextView myText = (TextView) findViewById(R.id.text_id);

Sumber: https://www.tutorialspoint.com/android/android_user_interface_controls.htm