Jumat, 09 Juli 2021

CRUD Database MySQL Pada Android Studio



Apa itu MySQL


·         Pengertian

MySQL adalah sebuah DBMS (Database Management System) menggunakan perintah SQL (Structured Query Language) yang banyak digunakan saat ini dalam pembuatan aplikasi berbasis website. MySQL dibagi menjadi dua lisensi, pertama adalah Free Software dimana perangkat lunak dapat diakses oleh siapa saja. Dan kedua adalah Shareware dimana perangkat lunak berpemilik memiliki batasan dalam penggunaannya.

MySQL termasuk ke dalam RDBMS (Relational Database Management System). Sehingga, menggunakan tabel, kolom, baris, di dalam struktur database -nya. Jadi, dalam proses pengambilan data menggunakan metode relational database. Dan juga menjadi penghubung antara perangkat lunak dan database server.


·         Fungsi

Secara garis besar, fungsi dari MySQL adalah untuk membuat dan mengelola database pada sisi server yang memuat berbagai informasi dengan menggunakan bahasa SQL. Fungsi lain yang dimiliki adalah memudahkan pengguna dalam mengakses data berisi informasi dalam bentuk String (teks), yang dapat diakses secara personal maupun publik dalam web.

Hampir seluruh penyedia server web atau host menyediakan fasilitas untuk MySQL dalam pengembangan aplikasi berbasis website untuk dikelola oleh web developer. Kemudian, antarmuka dari MySQL adalah PHPMyAdmin. Yang berfungsi untuk menghubungkan antara bahasa pemrograman PHP dengan MySQL untuk proses pengelolaan basis data pada web.


Kelebihan dari MySQL

Berikut ini merupakan beberapa kelebihan, diukur dari segi penggunaan dan fitur yang dimiliki.

·         Bersifat Open Source


Untuk penggunaan dari MySQL dapat diakses oleh siapa saja dan kapan saja. Karena memiliki dua lisensi, yaitu Free Software dan Shareware. Selain itu juga termasuk dalam sistem manajemen database yang disediakan secara gratis. Serta, memiliki banyak komunitas dan dokumentasi untuk membantu anda dalam mengembangkan aplikasi menggunakan database server.


·         Mendukung penggunaan Multi User


MySQL juga dapat digunakan secara bersama – sama dalam satu waktu karena bersifat Multi User. Sehingga, anda tidak perlu khawatir ketika mengakses basis data secara bersamaan. Keuntungannya disini adalah, tim developer dapat mengerjakan database secara bersamaan (team work). 


·         Terintegrasi dengan Bahasa Pemrograman yang lain


Kelebihan lain adalah dapat terintegrasi dengan bahasa pemrograman yang lain seperti pada PHP. Dengan menggunakan PHPMyAdmin sebagai perantara, anda sudah bisa membuat basis data pada web server dengan lebih efektif. Kemudian, dapat digunakan juga untuk kebutuhan pengembangan perangkat lunak dengan menggunakan framework seperti Laravel, dan CodeIgniter.


·         Sajian Tipe Data yang bervariatif


Tipe data yang disajikan dalam MySQL juga sangat variatif. Contohnya adalah tipe data varchar, integer, float, double, date, timestamp, dll. Dalam hal ini, anda dapat mengelompokkan berbagai data sesuai dengan kriteria informasi secara lebih akurat dan efektif. Pengelolaan database dalam server juga akan terbantu dengan adanya banyak jenis tipe data untuk mengembangkan perangkat lunak yang kompleks dan terstruktur.


·         Struktur Tabel Cenderung Fleksibel


Jika dibandingkan dengan struktur tabel dari database yang lain seperti Oracle dan Postgre, MySQL tergolong lebih mudah. Mengapa demikian? Karena sebagai contoh dalam proses eksekusi pada ALTER TABLE lebih mudah digunakan dan cepat diproses.


·         Sistem Keamanan yang Telah Terjamin


MySQL dapat mengatur hak akses pengguna (user) dengan enkripsi tinggi. Selain itu, terdapat beberapa fitur keamanan yang lain seperti, level nama pada host, dan pembuatan subnet mask. Jadi, bukan berarti dengan perangkat lunak yang bersifat open source membuat keamanan menjadi buruk.


·         Tidak Membutuhkan Kapasitas RAM yang besar


MySQL dapat diinstal pada perangkat dengan kapasitas RAM terbatas. Jika dibandingkan dengan database lain, dapat dijalankan dengan kapasitas memori yang kecil. Sangat cocok digunakan oleh setiap orang untuk membantu pengembangan aplikasi dengan konsumsi RAM yang rendah.


·         Perangkat Lunak Portable


Kelebihan berikutnya yang dimiliki oleh MySQL adalah perangkat lunak bersifat portable. Portable disini maksudnya adalah sistem basis data dapat diolah dalam berbagai platform (multi platform) Sehingga, dapat dijalankan baik dari sisi Windows, Linux, maupun Mac OS.


·         Support untuk Spesifikasi Hardware yang Rendah


MySQL sangat mendukung untuk perangkat hardware yang memiliki spesifikasi rendah. Jadi, jangan khawatir untuk anda yang memiliki spek PC / laptop yang masih rendah. Dengan menggunakan DBMS ini, anda juga bisa membuat sistem basis data untuk server dalam sebuah website.


·         Memiliki Performa yang baik


Kelebihan terakhir yang dimiliki adalah dari sisi performa yang dimilikinya. Kecepatan dalam penanganan kueri sangat cepat. Kemudian, juga dapat menangani proses SQL per satuan waktu.




Kekurangan dari MySQL


Selain memiliki banyak keuntungan, pastinya juga memiliki beberapa kekurangan. Berikut merupakan beberapa kekurangan dari sisi fitur dan penggunaan.


·         Kurang Cocok untuk Mengembangkan Aplikasi berbasis Game dan Mobile


Untuk anda yang sedang mengembangkan aplikasi untuk membuat game dan mobile, kami sarankan untuk tidak menggunakan MySQL. Karena, manajemen database yang dimiliki kurang cocok untuk pengelolaan aplikasi tersebut. Lebih mudah untuk menggunakan database server dengan metode Cloud yang lebih real time.


·         Technical Support yang Kurang Mendukung


Technical support yang dimiliki oleh MySQL sendiri dirasa kurang mendukung. Karena, belum menyediakan support yang baik dari segi teknisnya. Sehingga, user mengalami kesulitan saat menghubungi technical support.


·         Kurang Mendukung untuk Pemakaian Database dengan Kapasitas Besar


Kurang cocok dan tidak direkomendasikan untuk mengelola basis data dalam kapasitas besar. Apabila anda, menginginkan sebuah database server yang dapat menampung data dalam jumlah besar, maka anda dapat mencoba dengan menggunakan Big Data atau BigQuery. Karena, MySQL dikhususkan supaya ramah dengan perangkat yang memiliki spesifikasi rendah.




Definisi CRUD


CRUD adalah akronim yang berasal dari dunia pemrograman komputer dan mengacu pada empat fungsi. Empat fungsi tersebut perlu diimplementasikan ke dalam aplikasi, empat fungsi yaitu: Create, Read, Update, Delete. CRUD adalah basic atau dasar yang harus dikuasai oleh para programmer. Nantinya para programmer membuat aplikasi yang mendukung fitur CRUD. Hampir semua aplikasi yang sering kita gunakan mempunyai fitur CRUD. Fitur CRUD sangat berguna bagi pengguna aplikasi yang dibuat. Dengan adanya CRUD pengguna tidak perlu repot misalkan ingin menambah data atau menghapus data. Dengan adanya fitur CRUD semuanya menjadi mudah, operasi CRUD adalah manipulasi data dasar untuk database. Berikut ini adalah Pengertian CRUD (Create, Read, Update, Delete).




1.      Create


Create diartikan membuat atau menambahkan, membuat atau menambahkan data menggunakan aplikasi yang sudah dibuat, ketika kita menambahkan data diaplikasi nantinya akan otomatis akan masuk kedalam database yang sudah dibuat.


2.      Read


Read diartikan menampilkan atau membaca, menampilkan atau membaca data kita tidak perlu repot untuk menampilkan data cukup dilihat menggunakan aplikasi data mana yang ingin ditampilkan maka akan tertampil.


3.      Update


Update diartikan mengubah, kita tidak perlu repot ketika ingin mengubah data, cukup menggunakan aplikasi maka akan terubah dan database otomatis akan terubah.


4.      Delete


Delete diartikan menghapus, fitur ini digunakan untuk menghapus data yang tidak diperlukan. Kita tidak perlu repot ketika ingin menghapus data, tidak perlu menghapus data lewat database.




Pengertian PHP


Pengertian PHP, PHP Adalah bahasa scripting server-side, Bahasa pemrograman yang digunakan untuk mengembangkan situs web statis atau situs web dinamis atau aplikasi Web. PHP singkatan dari Hypertext Pre-processor, yang sebelumnya disebut Personal Home Pages.


Script sendiri merupakan sekumpulan instruksi pemrograman yang ditafsirkan pada saat runtime. Sedangkan Bahasa scripting adalah bahasa yang menafsirkan skrip saat runtime. Dan biasanya tertanam ke dalam lingkungan perangkat lunak lain.


Karena php merupakan scripting server-side maka jenis bahasa pemrograman ini nantinya script/program tersebut akan dijalankan/diproses oleh server. Berbeda dengan javascript yang client-side.


PHP adalah bahasa pemrograman umum yang berarti php dapat disematkan ke dalam kode HTML, atau dapat digunakan dalam kombinasi dengan berbagai sistem templat web, sistem manajemen konten web, dan kerangka kerja web.




Apa Fungsi PHP


Fungsi PHP adalah membuat atau mengembangkan situs web statis atau situs web dinamis atau aplikasi Web. Walaupun sebenarnya bukan hanya PHP bahasa pemrograman yang bisa digunakan untuk memuat website.


PHP digunakan karena untuk membuat website dinamis bisa digunakan untuk menyimpan data ke dalam database, membuat halaman yang dapat berubah-ubah sesuai dengan input  user, memproses form, dll.


Dalam membuat file PHP dapat digabung menggunakan tag html, Dan ketika tanpa menggunakan tag html apa pun disebut file PHP Murni. Server menginterpretasikan kode PHP dan mengeluarkan hasilnya sebagai kode HTML ke browser web. Agar server mengidentifikasi kode PHP dari kode HTML, kita harus selalu menyertakan kode PHP dalam tag PHP.




Syntax PHP


Pengertian Syntax PHP adalah aturan penulisan agar mampu dimengerti dengan benar oleh compiler saat membaca bahasa pemrograman. Dalam penulisan PHP yang benar diawali dengan “<?php” dan diakhiri dengan “?>”. Dan di dalam File PHP juga dapat berisi tag seperti HTML dan skrip sisi klien seperti JavaScript.


Contoh Penulisan Syntax PHP yang Benar


<?php


            echo’Hello World’;


?>


Ekstensi File PHP


PHP memiliki ekstensi tersendiri, Fungsi dari adana ekstensi berebedai agar server dapat mengidentifikasi file dan script PHP. File PHP harus harus disimpan ekstensi “.php” . Ekstensi file PHP yang lebih lama termasuk


1.      .phtml


2.      .php3


3.      .php4


4.      .php5


5.      .phps


Mengapa Menggunakan PHP ?


Banyak bahasa pemrograman di luar sana namun mengapa banyak website yang menggunakan PHP sebagai bahasa pemrograman yang utama. Berdasarkan survey yang dilakukan W3tech.com Bahasa PHP digunakan 79% website di dunia ini.


Hal tersebut tentunya beralasan, Di bawah ini adalah beberapa alasan kuat mengapa banyak orang lebih memilih PHP dan menjadikan PHP menjadi bahasa pemrograman terpopuler :


1.      PHP adalah merupakan bahasa yang bersifat open source dan gratis.


2.      Proses belajar pemrograman PHP yang lebih singkat dibandingkan dengan bahasa lain seperti JSP, ASP dll.


3.      Karena Bahasa pemrograman terpopuler, Maka komunitas banyak dokumentasi lebih besar


4.      Sebagian besar server web hosting mendukung PHP secara default tidak seperti bahasa lain seperti ASP yang membutuhkan IIS. Ini menjadikan PHP pilihan yang hemat biaya.


5.      PHP diperbarui secara teratur untuk mengikuti tren teknologi terbaru.


6.      PHP adalah bahasa scripting sisi server ; yang berarti hanya perlu menginstalnya di server dan komputer klien yang meminta sumber daya dari server tidak perlu menginstal PHP; hanya peramban web saja sudah cukup.


7.      PHP bekerja sama dengan MySQL ; Hal ini tidak berarti dapat menggunakan PHP dengan sistem manajemen basis data lainnya. Anda masih dapat menggunakan PHP dengan Postgres, Peramal, MS SQL Server ODBC dll.


8.      PHP adalah bahasa lintas platform; yang berarti dapat pada aplikasi di sejumlah sistem operasi yang berbeda seperti windows, Linux, Mac OS dll. 


PRATIKUM

1.      Buka IDE Android Studio

2.      Ketikan Script Activity_Main.xml


3.      Ketikan Script MainActivity.java


4.      Klik kanan pada direktori package name > New > Activity > Empty Activity

5.      Ketikan Script  activity_tampil_semua_mhs.xml


6.      Ketikan Script  tampilsemuamhs.java


7.      Buat Activity lagi yang berisi layout list_item.xml dan class ListView. Cara pembuatannya sama dengan point sebelumnya hanya saja bagian Activity name silahkan diisi dengan “ListView” dan layout name diisi dengan ”list_item”. Jika sudah klik finish.

8.      Ketikan Script list_item.xml


9.      Ketikan Script ListView.java


10.  Activity ini berfungsi untuk menampilkan detail salah satu data mahasiswa yang di klik dari tampilan semua data mahasiswa. Activity ini terdiri dari Layout activity_tampil_mhs.xml dan Class TampilMhs.java untuk cara pembuatannya sama dengan point sebelumnya

11.  Ketikan Script activty_tampil_mhs.xml


12.  Ketikan Script TampilMhs.java


13.  Selanjutnya silahkan buat class baru dengan nama konfigurasi.java. klik kanan pada direktori nama package, caranya pilih New > Java Class

14.  Ketikan Script konfigurasi.java


15.  Ketikan Script RequestHandler.java


16.  Terakhir atur AndroidManifest.xml



17.  Sekarang coba jalankan dengan menggunakan Vysor, tampilan dari program diatas akan tampak seperti video dibawah ini



18.  Setelah itu cek pada web http://android.unggasid.com/mhs/ untuk memastikan bahwa data yang telah diinputkan sudah ada pada database



1


Sabtu, 26 Juni 2021

MEMBUAT APPS VIDEO PLAYER PADA ANDROID STUDIO

 

v  VIDEO PLAYER

 

1.       Buka IDE Android Studio

2.       Siapkan sebuah file video dengan forma file .mp4 seperti gambar di bawah ini


3.       Ketikan Script Activity_Main.xml


4.       Ketikan Script MainActivity.java


 

5.       Hasil



Sabtu, 19 Juni 2021

MEMBUAT APPS MEDIA PLAYER PADA ANDROID STUDIO


v  MEDIA PLAYER

 

Framework multimedia Android menyertakan dukungan untuk memutar berbagai jenis  media umum agar Anda dapat mengintegrasikan audio, video, dan gambar dengan mudah  ke dalam aplikasi Anda. Anda dapat memutar audio atau video dari file media yang  disimpan dalam resource aplikasi (resource mentah), dari file mandiri dalam sistem file,  atau dari streaming data yang masuk melalui koneksi jaringan, semuanya menggunakan  MediaPlayer API. 

Modul ini menunjukkan cara menulis aplikasi pemutar media yang berinteraksi dengan  pengguna dan sistem untuk mendapatkan performa yang baik dan pengalaman pengguna  yang menyenangkan. 

Catatan: Anda hanya dapat memutar data audio ke perangkat output standar. Saat ini,  perangkat tersebut mencakup speaker perangkat seluler atau headset Bluetooth. Anda  tidak dapat memutar file suara dalam audio percakapan saat panggilan sedang  berlangsung.

 

Dasar-dasar 

Class berikut digunakan untuk memutar suara dan video dalam frameworkAndroid:

MediaPlayer Class ini adalah API utama untuk memutar suara dan video.

AudioManager Class ini mengelola sumber audio dan output audio di perangkat.

Deklarasi manifes 

Sebelum mulai mengembangkan aplikasi menggunakan MediaPlayer, pastikan manifes  Anda memiliki deklarasi yang sesuai untuk mengizinkan penggunaan fitur terkait. 

      1. Izin Internet - Jika Anda menggunakan MediaPlayer untuk melakukan streaming konten  berbasis jaringan, aplikasi Anda harus meminta akses jaringan.  

<uses-permission android:name="android.permission.INTERNET" /> 

      2. Izin Penguncian Layar Saat Aktif - Jika aplikasi pemutar Anda mengharuskan layar tetap  menyala atau mengharuskan prosesor tetap bekerja, atau menggunakan metode  MediaPlayer.setScreenOnWhilePlaying() atau MediaPlayer.setWakeMode(),Andaharusmemintaizinini.<uses-permission android:name="android.permission.WAKE_LOCK"/> 

Menggunakan MediaPlayer 

Salah satu komponen terpenting framework media adalah class MediaPlayer. Objek class ini dapat mengambil, mendekode, serta memutar audio dan video dengan sedikit  penyiapan. Class ini mendukung beberapa sumber media yang berbeda, seperti: 

Resource lokal 

URI internal, seperti yang mungkin Anda peroleh dari Content Resolver

URL eksternal (streaming) 

Untuk daftar format media yang didukung Android, lihat halaman Format Media yang  Didukung. Berikut contoh cara memutar audio yang tersedia sebagai resource mentah lokal  (disimpan dalam direktori res/raw/ aplikasi Anda):


Java 

 MediaPlayer mediaPlayer = MediaPlayer.create(context,  R.raw.sound_file_1);   mediaPlayer.start(); // no need to call prepare(); create()  does that for you 

 Dalam hal ini, resource "mentah" adalah file yang tidak akan diuraikan oleh sistem  dengan cara khusus apa pun. Namun, konten resource ini tidak boleh berupa audio  mentah. Konten ini harus berupa file media yang dienkode dan diformat dengan benar  dalam salah satu format yang didukung. 

Berikut adalah cara melakukan pemutaran dari URI yang tersedia secara lokal dalam  sistem (yang diperoleh melalui Content Resolver, misalnya): 

Java 

 Uri myUri = ....; // initialize Uri here  MediaPlayer mediaPlayer = new MediaPlayer(); 

 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  mediaPlayer.setDataSource(getApplicationContext(), myUri);  mediaPlayer.prepare(); mediaPlayer.start(); 

Melakukan pemutaran dari URL jarak jauh melalui streaming HTTP akan terlihat seperti  ini: 


Java 

 String url = "http://........"; // your URL here  MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDataSource(url);  mediaPlayer.prepare(); // might take long! (for buffering, etc)  mediaPlayer.start(); 

  

Catatan: Jika Anda meneruskan URL untuk melakukan streaming file media online, file  tersebut harus dapat didownload secara progresif.

 

Membuat App MusicPlayer Menggunakan API MediaPlayer  

·         Buka IDE Android Studio

·         Siapkan sebuah file suara/musik dengan forma file .mp3 dan file gambar headphone  dengan jenis file .png seperti gambar di bawah ini

·         Buat sebuah direktori/folder engan nama raw di dalam folder ../res/raw dengan cara  klik kanan pada folder res lalu pilih New – Directory seperti gambar di bawah ini

·         Copy file music.mp3 tadi kedalam folder ../raw dengan cara klik kanan pada folder  raw lalu pilih Show in Explore seperti gambar di bawah ini. Setelah itu akan tampil windows explorer lalu Paste di dalam folder raw file music.mp3 tadi


·           Ketikan Script Activity_Main.xml


·          Ketikan Script MainActivity.java

·         Hasil



 

 

Jumat, 11 Juni 2021

PENGENALAN ASYNCTASK DAN ASYNCTASKLOADER PADA ANDROID STUDIO

 

v  AsycTask

Gunakan kelas AsyncTask untuk mengimplementasikan tugas asinkron yang berjalan  lama di thread pekerja. (Thread pekerja adalah thread yang bukan thread utama atau  thread UI.) AsyncTask memungkinkan Anda menjalankan operasi latar belakang dan  mempublikasikan hasil di thread UI tanpa memanipulasi thread atau penangan. 

Bila AsyncTask dieksekusi, maka akan melalui empat langkah:

1. onPreExecute( ) dipanggil di thread UI sebelum tugas dieksekusi. Langkah ini biasanya digunakan untuk mempersiapkan tugas, misalnya dengan menampilkan  bilah kemajuan di UI.

2. doInBackground( Params.. . ) dipanggil pada thread latar belakang segera     setelah  onPreExecute( ) selesai. Langkah ini menjalankan komputasi latar     belakang,  mengembalikan hasil, danmeneruskan hasilnya ke onPostExecute( ) . Metode doInBackground( ) juga bisa memanggil publishProgress( Progress. . . ) untuk  mempublikasikan satu atau beberapa unit kemajuan.

3. onProgressUpdate( Progress. . . ) berjalan di thread UI setelah publishProgress(  Progress. . . ) dipanggil. Gunakan onProgressUpdate( ) untuk melaporkan suatu  bentuk kemajuan ke thread UI sewaktu komputasi latar belakang dieksekusi.  Misalnya, Anda bisa menggunakannya untuk meneruskan data guna  menganimasikan bilah kemajuan atau menampilkan log di bidang teks.

4. onPostExecute( Result) berjalan di thread UI setelah komputasi latar belakang  selesai.

 

Penggunaan AsyncTask

Untuk menggunakan kelas AsyncTask , definisikan subkelas AsyncTask yang  menggantikan metode doInBackground( Params. . . ) (dan biasanya juga metode  onPostExecute( Result) ). Bagian ini menjelaskan parameter dan penggunaan AsyncTask ,  kemudian menampilkan contoh lengkap. 

Parameter AsynTask

Di subkelas AsyncTask , sediakan tipe data untuk tiga jenis parameter.  

"Params" menetapkan tipe parameter yang diteruskan ke doInBackground( )  sebagai larik.  

"Progress" menetapkan tipe parameter yang diteruskan ke publishProgress( ) di  thread latar belakang. Parameter ini selanjutnya diteruskan ke metode  onProgressUpdate( ) di thread utama.  

"Result" menetapkan tipe parameter yang dikembalikan doInBackground( ) .  Parameter ini secara otomatis diteruskan ke onPostExecute( ) di thread utama. Tetapkan tipe data untuk

setiap tipe parameter ini, atau gunakan Void jika tipe  parameter tidak akan digunakan.                        Misalnya: public class MyAsyncTask extends AsyncTask <String, Void,  Bitmap>{} 

Dalam deklarasi kelas ini:  

Tipe parameter "Params" adalah String , yang berarti bahwa MyAsyncTask  memerlukan satu atau beberapa string sebagai parameter di doInBackground( ),  misalnya untuk digunakan di kueri.  

Tipe parameter "Progress" adalah Void, yang berarti bahwa MyAsyncTask tidak akan  menggunakan metode publishProgress( ) atau onProgressUpdate( ).  

Tipe parameter "Result" adalah Bitmap. MyAsyncTask mengembalikan Bitmap di  doInbackground( ), yang diteruskan ke dalam onPostExecute( ) . 

 

Contoh AsyncTask 

 

Contoh di atas melewati tiga dari empat langkah-langkah AsyncTask dasar:  


1.    doInBackground( ) mengunduh materi, tugas yang berjalan lama. Langkah ini  menghitung persentase file yang diunduh dari indeks loop for dan meneruskannya  ke publishProgress(). Pemeriksaan untuk isCancelled( ) di dalam loop for  memastikan bahwa tugas telah dibatalkan, sistem tidak menunggu hingga loop selesai.  

2.    onProgressUpdate() memperbarui kemajuan persentase. Ini dipanggil setiap kali  metode publishProgress() dipanggil di dalam doInBackground( ) , yang memperbarui  kemajuan persentase. 


3.  doInBackground( ) menghitung jumlah total byte yang diunduh dan  mengembalikannya. onPostExecute( ) menerima hasil yang dikembalikan dan  meneruskannya ke dalam onPostExecute( ) , yang ditampilkan di dialog. 

Tipe parameter yang digunakan dalam contoh ini adalah:  

URL untuk tipe parameter "Params". Tipe URL berarti Anda bisa meneruskan  sejumlah URL ke dalam panggilan, dan URL secara otomatis diteruskan ke dalam  metode doInBackground( ) sebagai larik.  

Integer untuk tipe parameter "Progress".  

Long untuk tipe parameter "Result". 

Mengeksekusi AsyncTask 

Setelah Anda mendefinisikan subkelas AsyncTask , buat instance-nya di thread UI.  Kemudian panggil execute( ) di instance, dengan meneruskan sejumlah parameter.  (Parameter tersebut sesuai dengan tipe parameter "Params" yang dibahas di atas). 

Misalnya, untuk mengeksekusi tugas DownloadFilesTask yang didefinisikan di atas,  gunakan baris kode berikut:  new DownloadFilesTask( ) . execute( url1, url2, url3) ;

Membatalkan AsyncTask 

Anda bisa membatalkan tugas kapan saja, dari thread apa pun, dengan memanggil  metode cancel() .  

Metode cancel( ) akan mengembalikan false jika tugas tidak bisa dibatalkan,  biasanya karena sudah diselesaikan secara normal. Jika tidak, cancel( ) akan  mengembalikan true.  

Untuk mengetahui apakah tugas sudah dibatalkan, periksa nilai yang dikembalikan  isCancelled( ) secara berkala dari doInBackground( Obj ect[] ) , misalnya dari dalam  loop seperti yang ditampilkan dalam contoh di atas. Metode isCancelled( ) akan  mengembalikan true jika tugas dibatalkan sebelum diselesaikan secara normal.  

Setelah tugas AsyncTask dibatalkan, onPostExecute( ) tidak akan digunakan setelah  doInBackground( ) dikembalikan. Sebagai gantinya, onCancelled( Obj ect) akan 

dipanggil. Implementasi default onCancelled( Obj ect) cukup memanggil  onCancelled( ) dan mengabaikan hasil.  

Secara default, tugas yang sedang diproses boleh diselesaikan. Untuk  memperbolehkan cancel( ) menyela thread yang sedang mengeksekusi tugas,  teruskan true untuk nilai mayInterruptIfRunning . 

 

Keterbatasan AsyncTask 

AsyncTask tidak praktis untuk beberapa kasus penggunaan:  

1.    Perubahan pada konfigurasi perangkat menyebabkan masalah. Bila konfigurasi  perangkat berubah sewaktu AsyncTask berjalan, misalnya jika pengguna mengubah  orientasi layar, aktivitas yang membuat AsyncTask akan dimusnahkan dan dibuat  ulang. Metode AsyncTask tidak dapat mengakses aktivitas yang baru saja dibuat dan  hasil AsyncTask tidak akan dipublikasikan.  

2.    Objek AsyncTask lama tetap ada, dan aplikasi Anda bisa kehabisan memori atau  mogok. Jika aktivitas yang membuat AsyncTask dimusnahkan, AsyncTask tidak akan  dimusnahkan bersamanya. Misalnya, jika pengguna keluar dari aplikasi setelah  AsyncTask dimulai, AsyncTask akan terus menggunakan sumber daya kecuali jika  Anda memanggil cancel( ) . 

Bila menggunakan AsyncTask :  

Tugas singkat atau yang bisa disela.  

Tugas yang tidak perlu untuk melaporkan kembali ke UI atau pengguna.  Tugas dengan prioritas rendah yang bisa ditinggalkan sebelum selesai. 

Untuk semua situasi lainnya, gunakan AsyncTaskLoader , adalah bagian dari kerangka  kerja Loader yang akan dijelaskan berikutnya. 

 

Loader 

Tugas latar belakang biasanya digunakan untuk memuat data seperti laporan prakiraan  cuaca atau ulasan film. Pemuatan data bisa jadi banyak menggunakan memori, dan Anda  ingin data tersedia sekalipun jika konfigurasi perangkat berubah. Untuk situasi ini, gunakan  loader, yang berupa rangkaian kelas yang memfasilitasi pemuatan data ke dalam aktivitas.

Loader menggunakan kelas LoaderManager untuk mengelola satu atau beberapa  loader. LoaderManager menyertakan serangkaian callback bila loader telah dibuat, bila  pemuatan datanya selesai, dan bila disetel ulang. Memulai loader 

Gunakan kelas LoaderManager untuk mengelola satu atau beberapa instance Loader  dalam aktivitas atau fragmen. 

Gunakan initLoader( ) untuk melakukan inisialisasi dan mengaktifkannya. Biasanya,  Anda melakukan ini dalam metode onCreate( ) aktivitas. Misalnya: 

// Prepare the loader. Either reconnect with an existing one, 

// or start a new one.getLoaderManager( ) . initLoader( 0, null,  this) ; 

Jika Anda menggunakan Pustaka Dukungan, buat panggilan ini menggunakan  getSupportLoaderManager( ) sebagai ganti 

getLoaderManager( ) . Misalnya: 

getSupportLoaderManager( ) . initLoader( 0, null, this) ; Metode initLoader( ) memerlukan tiga parameter:  

1. ID unik yang mengidentifikasi loader. ID ini bisa berupa apa saja yang Anda inginkan.  

        2.     Argumen opsional yang         disediakan ke loader saat pembuatan, dalam bentuk  Bundle. Jika loader         sudah ada, parameter ini akan diabaikan.  

        3.    Implementasi LoaderCallbacks , yang dipanggil oleh LoaderManager untuk  melaporkan kejadian loader. Dalam contoh ini, kelas lokal mengimplementasikan  antarmuka LoaderManager. LoaderCallbacks , sehingga meneruskan referensi ke  dirinya sendiri, this . 

Panggilan initLoader( ) memiliki dua kemungkinan hasil:  

Jika loader yang ditetapkan melalui ID sudah ada, maka loader yang dibuat terakhir  menggunakan ID itu akan digunakan kembali.  

Jika loader yang ditetapkan melalui ID tidak ada, initLoader( ) akan memicu metode  onCreateLoader) . Di sinilah Anda mengimplementasikan kode untuk membuat  instance dan mengembalikan loader baru. 

Catatan:Bila initLoader( ) membuat loader atau menggunakan kembali loader yang ada,  implementasi


LoaderCallbacks yang diberikan akan dikaitkan dengan loader dan dipanggil bila keadaan  loader berubah. Jika loader yang diminta sudah ada dan sudah menghasilkan data, maka  sistem segera memanggil onLoadFinished( ) (selama initLoader( ) ), jadi bersiaplah jika hal  ini terjadi. 

Masukkan panggilan ke initLoader( ) di onCreate( ) sehingga aktivitas bisa dihubungkan  kembali ke loader yang sama bila konfigurasi berubah. Dengan cara itu, loader tidak  kehilangan data yang sudah dimuatnya. 

Memulai ulang loader 

Bila initLoader( ) menggunakan kembali loader yang ada, maka data yang telah dimuat  loader tidak akan diganti, namun kadang-kadang Anda perlu menggantinya. Misalnya, bila  Anda menggunakan kueri pengguna untuk melakukan penelusuran dan pengguna  memasukkan kueri baru, Anda perlu memuat ulang data dengan menggunakan istilah  penelusuran baru. Dalam situasi ini, gunakan metode restartLoader( ) dan teruskan ID  loader yang ingin dimulai ulang. Hal ini akan memaksa muatan data lain dengan data  masukan baru. 

Tentang metode restartLoader( ) : 

restartLoader( ) menggunakan argumen yang sama dengan initLoader( ) . restartLoader(  ) akan memicu metode onCreateLoader( ) , seperti yang dilakukan initLoader( ) saat  membuat loader baru. Jika sudah ada loader dengan ID yang diberikan, restartLoader( )  akan memulai ulang loader yang diidentifikasi dan mengganti datanya. Jika tidak ada loader  dengan ID yang diberikan, restartLoader( ) akan memulai loader baru. 

Callback LoaderManager 

Objek LoaderManager secara otomatis memanggil onStartLoading( ) saat membuat  loader. Setelah itu, LoaderManager akan mengelola keadaan loader berdasarkan pada  keadaan aktivitas dan data, misalnya dengan memanggil onLoadFinished( ) bila data telah  dimuat. Untuk berinteraksi dengan loader, gunakan salah satu callback LoaderManager di  aktivitas yang memerlukan data: Panggil onCreateLoader( ) agar bisa membuat instance  dan mengembalikan loader baru untuk ID yang diberikan. 

Panggil onLoadFinished( ) bila loader yang dibuat sebelumnya selesai memuat. Di sinilah  Anda biasanya ingin memindahkan data ke dalam tampilan aktivitas.

Panggil onLoaderReset( ) bila loader yang dibuat sebelumnya sedang disetel ulang,  sehingga datanya tidak tersedia. 

Di sinilah aplikasi harus membuang semua referensi apa pun yang dimilikinya ke data  loader. Subkelas Loader bertanggung jawab atas pemuatan data sebenarnya. Subkelas Loader yang Anda gunakan bergantung pada tipe data yang dimuat, namun salah satu yang  paling mudah adalah AsyncTaskLoader, yang akan dijelaskan berikutnya. AsyncTaskLoader  menggunakan AsyncTask untuk menjalankan tugas pada thread pekerja. 

AsyncTaskLoader 

AsyncTaskLoader adalah loader yang setara dengan AsyncTask. AsyncTaskLoader  menyediakan metode, 

loadInBackground(), yang dijalankan di thread terpisah. Hasil loadInBackground( )  secara otomatis dikirimkan ke thread UI, melalui onLoadFinished( ) LoaderManager  callback. 

Penggunaan AsyncTaskLoader 

Untuk mendefinisikan subkelas AsyncTaskLoader , buat kelas yang memperluas  AsyncTaskLoader<D> , dalam hal ini Dadalah tipe data yang sedang Anda muat. Misalnya,  AsyncTaskLoader ini akan memuat daftar string: public static class StringListLoader extends  AsyncTaskLoader<List<String>> {} 

Berikutnya, implementasikan konstruktor yang cocok dengan implementasi super kelas:  Konstruktor menggunakan konteks aplikasi sebagai argumen dan meneruskannya ke  panggilan untuk super() . Jika loader Anda memerlukan informasi tambahan untuk  melakukan pemuatan, konstruktor bisa mengambil argumen tambahan. Dalam contoh  yang ditampilkan di bawah ini, konstruktor menggunakan sebuah istilah kueri. 

public StringListLoader(Context context, String queryString) { super(context); 

mQueryString = queryString; 

Untuk melakukan pemuatan, gunakan metode penggantian loadInBackground( ) , akibat  metode doInBackground( ) dari AsyncTask . Misalnya: 

@Override 

public List<String> loadInBackground() {

List<String> data = new ArrayList<String>; 

//TODO: Load the data from the network or from a database return data; 

Mengimplementasikan callback 

Gunakan konstruktor di callback onCreateLoader() LoaderManager , yang  merupakantempat membuat loader baru. 

Misalnya, callback onCreateLoader() ini menggunakan konstruktor StringListLoader  yang didefinisikan di atas: 

@Override 

public Loader<List<String>> onCreateLoader(int id, Bundle args) { return new StringListLoader(this, args. getString("queryString")); } 

Hasil loadInBackground() secara otomatis diteruskan ke dalam callback onLoadFinished(  ) , di sinilah Anda bisa menampilkan hasil di UI. Misalnya: 

public void onLoadFinished(Loader<List<String>> loader,  List<String> data) { 

mAdapter. setData(data); 

Callback onLoaderReset( ) hanya dipanggil bila loader akan dimusnahkan, sehingga  seringkali Anda bisa mengosongkan onLoaderReset( ) , karena Anda tidak akan mencoba  mengakses data setelah loader ini dimusnahkan. 

Bila Anda menggunakan AsyncTaskLoader, data Anda akan bertahan bila ada perubahan  konfigurasi perangkat. Jika aktivitas Anda dmusnahkan secara permanen, loader ini akan  dimusnahkan bersamanya, tanpa tugas yang menanti danmengonsumsi sumber daya  sistem. 

Loader juga memiliki manfaat lain, misalnya loader bisa memantau perubahan sumber  data dan memuat ulang data jika terjadi perubahan. Anda akan mengetahui selengkapnya  tentang loader tertentu di pelajaran berikutnya.

 

        Contoh Program AsyncTaskDownload

·         Buka IDE Android Studio

·         Ketikan Script Activity_Main.xml

·         Ketikan Script MainActivity.java




·         Buat sebuah file xml baru dengan Nama network_security_config.xml di dalam folder /res/xml dan ketikan kode program berikut seperti gambar di bawah ini

 

 

·          Sesuaikan script AndroidManifest.xml seperti di bawah ini untuk mendaftarkan  komponen Intent Filter dan mendaftarkan permission akses internet & write external  storage yang kita butuhkan


·         Lalu coba jalankan menggunakan emulator yang tersedia di Android Studio Anda,  maka akan tampil seperti gabar dibawah ini 

 

 


Aplikasi akan meminta akses ke media penyimpanan anda, pilih izinkan selanjutnya  tekan tombol download Kembali maka progress download akan terlihat di layer.

Selanjutnya coba cek di folder …/download/ menggunakan file manager. Dan coba buka  file hasil download tersebut 



 

 

CRUD Database MySQL Pada Android Studio

Apa itu MySQL ·         Pengertian MySQL adalah sebuah DBMS (Database Management System) menggunakan perintah SQL (Structured Query Language...