1. ANDROID
FOR
BEGINNER MODUL 10
!
[ANDROID ASYNTASK]
!!!!!
SUDARYATNO
yatnosudar@gmail.com | @dodulz | facebook : yatno.sudar
Page 1 of 6
2. ANDROID ASYNTASK
!
Asyntask adalah class yang digunakan untuk melakukan proses secara background atau disebut
Background Processing. Tujuan dari aplikasi ini adalah agar aplikasi kita tidak error atau hang
pada saat dijalankan. Class ini terdiri dari tiga proses yaitu persiapan,proses,progress, dan hasil.
Contoh aplikasi yang menggunakan class AsynTask : GAME, aplikasi yang membutuhkan
Koneksi, aplikasi yang memiliki proses atau perhitungan terlalu banyak, dsb.
private class DownloadFilesTask extends AsyncTaskURL, Integer, Long {
Code diatas adalah contoh menggunaan Asyntask untuk mendownload file yang menggunakan
akses internet. Class DownloadFilesTask exteds dari class AsynTask dengan paramter
URL,Integer,Long paramter ini dapat kita modifikasi sesuai dengan proses yang kita gunakan
nantinnya.
• Paramter pertama digunakan untuk deklarasi atau paramter dari proses
• Paramter kedua digunakan untuk menampilkan progress dari proses yang sedang berlangsung
• Paramter ketiga merupakan hasil dari background processing.
!
Ada beberapa method yang digunakan di class ini diantarnnya :
1. onPreExecute()
Method ini digunakan sebelum memulai background processing. Jika anda memiliki widget yang
perlu di tampilkan deklarasikan di method ini. Karena untuk method doInBackground kita tidak
dapat mendeklarasikan atau pun merubah.
2. doInBackground(Params…)
Page 2 of 6
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
} !
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
} !
protected void onPostExecute(Long result) {
showDialog(Downloaded + result + bytes);
}
}
3. Semua proses yang dilakukan di method ini. Method ini tidak dapat melakukan akses ke widget,
karena method ini hanya khusus digunakan untuk background processing berlangsung.
3. onProgressUpdate(Progress…)
Method ini digunakan untuk menampilkan progres-progres dari doInBackground.
4. onPostExecute(Result)
Merupakan method yang digunakan untuk menampilkan hasil akhir dari proses yang sudah
dilakukan.
!!
Page 3 of 6
5. 3. Edit file MainActivity.java dengan code berikut :!
Page 5 of 6
public class MainActivity extends Activity {
private ProgressBar progressbar;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressbar = (ProgressBar) findViewById(R.id.progressbar);
textView = (TextView) findViewById(R.id.text_progress); !
}
public void _RunningProgress(View view) {
new BG_PROCESSING().execute(start);
}
class BG_PROCESSING extends AsyncTaskString, Integer, Boolean {
int myProgres = 0;
@Override
protected void onPreExecute() {
progressbar.setProgress(0);
Toast.makeText(MainActivity.this, onPreExecute,
Toast.LENGTH_SHORT).show();
textView.setText(Proses di Mulai);
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... params) {
if (params[0].equals(start)) {
while (myProgres 100) {
myProgres++;
publishProgress(myProgres);
SystemClock.sleep(100);
}
if (myProgres == 100) {
return true;
}}
return false;
}
@Override
protected void onProgressUpdate(Integer... values) {
textView.setText(Proses ke + values[0]);
progressbar.setProgress(values[0]);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Boolean result) {
textView.setText(Hasil adalah + result);
Toast.makeText(MainActivity.this, onPostExecute,
Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
}
}
6. 4. Code diatas digunakan untuk menampilakn progress bar dengan background proses. Di
method onPreExecute digunakan untuk memulai proses. Di method ini kita masih bisa
melakukan set untuk UI. Sedangkan di method doInBackground dilakukan proses perhitungan
progressbar. Progress bar dihitung sampai 100. Jika progressbar tidak sama dengan 100
maka return akan false. Method onProgressUpdata digunakan untuk menampilkan update
dari progressbar. code publishProgress(myProgres); yang terdapat di method
doInBackground berfungsi untuk melempar paramter ke method onProgressUpdate. Agar bisa
ditampilkan ke UI. dan proses terakhir yaitu onPostExecute digunakan untuk menampilkan
hasil akhir dari proses.
5. Jalankan Aplikasi.
!
Tugas :
1. Apakah fungsi dari AsyncTaskString, Integer, Boolean
2. Apa maksud dari params[0] pada method doInBackground dan values[0] dari method
onProgressUpdate
3. Tambahkan Toast.makeText(MainActivity.this, Proses Berjalan,
Toast.LENGTH_SHORT).show(); di method doInBackground apa yang akan terjadi.
4. Kemudian tambahkan code berikut di method doInBackground
Apakah terjadi perbedaan? Jika YA simpulkan…
Page 6 of 6
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, Proses
Berjalan, Toast.LENGTH_SHORT).show();
}
});